一、创建单个模块的项目
1.启动编辑器,新建项目
项目结构:
2.修改pom.xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
修改pom文件后在maven页面点击reload按钮
如果编辑器没有maven导航栏,可以试试以下方式:
双击打开pom.xml,右键选择 Add as Maven Project
右击项目,点击Add Framework Support-->勾选maven
3.新建controller
package com.example.demo.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class TestController {
@GetMapping("/hello")
public String Hello() {
return "hello,java";
}
}
编写代码后可以启动项目测试,打开localhost:8080/hello,页面返回了hello,java,一个简单的项目就创建完成了。
二、创建多模块项目
新建项目
删除src文件,修改pom.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>demo2</artifactId>
<version>1.0-SNAPSHOT</version>
<modules>
<module>User-Service</module>
<module>Depart-Service</module>
<module>common</module>
</modules>
<packaging>pom</packaging>
<properties>
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.2.2.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Hoxton.SR1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.1.0.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>8</source>
<target>8</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
2.新建子模块
删除site文件夹,修改子模块的pom文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>demo2</artifactId>
<groupId>org.example</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>UserService</artifactId>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>8</source>
<target>8</target>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</project>
在src文件下新建文件夹,在java目录下新建包com.userservice,在com.userservice包中建启动类
package com.userservice;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class UserServiceApplication {
public static void main(String[] args) {
SpringApplication.run(UserServiceSpplication.class, args);
}
}
在resources文件夹下新建配置文件application.yml,设置启动端口号
server:
port: 7000
在com.userservice包中建包controller,新建UserContoller
@RestController
@RequestMapping("/api/v1/user")
public class UserController {
@GetMapping("/hello")
public String hello() {
return "Hello,world";
}
}
build项目,出现target文件,项目结构如下:
在启动类处右键,运行项目,访问localhost:7000/api/v1/user/hello
练习的时候把RestController写成Controller,此时直接访问地址页面是空白,这种情况的解决方式:
给接口上面加上@ResponseBody注解
改成RestController
RestController是复合注解,用RestController可以不写@ResponseBody
3.连接数据库进行增删改查
修改子模块pom.xml,增加依赖
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.2</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
修改配置文件application.yml
spring:
application:
name: UserService
datasource:
url: jdbc:mysql://localhost:3306/test?serverTimezone=Asia/Shanghai
driver-class-name: com.mysql.cj.jdbc.Driver
username: root
password: root
mybatis:
mapper-locations: classpath:mapper/*.xml
新建User,UserDao,UserService,UserServiceImpl,UserMapper.xml,userController添加接口
@Data
public class User implements Serializable {
private Integer id;
private String name;
private String createdAt;
private String deletedAt;
private Integer deleted;
}
@Data 需要添加lombok依赖,可以自动生成get,set方法
@Mapper
public interface UserDao {
void insertUser(User user);
User getById(Integer id);
}
@Mapper可以和@Repository互换,推荐使用@Mapper
public interface UserService {
void insertUser(User user);
User getById(Integer id);
}
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserDao userDao;
public void insertUser(User user) {
userDao.insertUser(user);
}
public User getById(Integer id) {
return userDao.getById(id);
}
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.userservice.dao.UserDao">
<select id="getById" resultType="com.userservice.entities.User">
select * from user where id=#{value}
</select>
<insert id="insertUser" parameterType="com.userservice.entities.User">
insert into user (Name, CreatedAt, Deleted) values (#{user.name}, now(), 0);
</insert>
</mapper>
<mapper namespace="com.userservice.dao.UserDao"> namespace是UserDao的路径,具体的实现的id和UserDao中定义的方法名一致
@Autowired
private UserService userService;
@PostMapping(path = "/insert")
public String insertUser(@RequestBody User user) {
userService.insertUser(user);
return "Saved";
}
@GetMapping(path = "/{id}",produces = "application/json")
public User findUser(@PathVariable Integer id) {
User user = userService.getById(id);
return user;
}
数据库提前准备数据,访问localhost:7000/api/v1/user/6,
ps:这里只写了增加和查询接口,修改和删除可以自己补充
项目结构
三、生成swagger
修改pom
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
2.修改配置文件application.yml
spring:
mvc:
pathmatch:
matching-strategy: ant_path_matcher
3.添加配置类
@Configuration
public class SwaggerConfig {
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
.build();
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("UserService系统接口文档")
.description("这是系统接口文档说明")
.version("1.0")
.build();
}
}
4.启动类加注解@EnableSwagger2
访问http://localhost:7000/swagger-ui.html
然后根据同样的步骤新建Depart-Service子模块