SpringBoot中用Swagger实现接口文档实例
实例中用到:mysql+spring-data-jpa+swagger2(本实例springBoot版本为2.2.2.RELEASE)
1. 实例中用到的Swagger依赖:
<!-- swagger2 开始 -->
<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
<!--swagger2结束-->
实例中所有依赖:
<dependencies>
<!-- swagger2 开始 -->
<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
<!--swagger2结束-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--Mysql数据库驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!--jpa模板-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
2. 创建Swagger配置类
/**
1. Swagger2配置类
*/
@Configuration //让spring来加载该配置类
@EnableSwagger2 //开启Swagger2的功能
public class Swagger2Config {
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())//用来展示Api的基本信息
.select()//返回一个展示ApiSelectBuilder实例,用来控制那些接口暴露给Swagger来展示
.apis(RequestHandlerSelectors.basePackage("com.example.controller")) //用来配置包扫描路径
.paths(PathSelectors.any())
.build();
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("springBoot利用swagger构建api文档")
.description("简单优雅的restfun风格,http://blog.csdn.net/forezp")
.termsOfServiceUrl("http://blog.csdn.net/forezp")
.version("1.0")
.build();
}
}
3. application.yml全局配置
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/stus?serverTimezone=UTC
username: root
password: xxxxx #根据自己的数据库密码配置
jpa:
hibernate:
ddl-auto: update
show-sql: true
database: mysql
4.pojo类
@Entity(name = "user")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String username;
private String password;
private String name;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
5.Dao数据层
public interface UserDao extends JpaRepository<User,Long> {
User findByUsername(String username);
}
6.Service业务层
/**用户业务层
*/
@Service
public class UserService {
@Autowired
private UserDao userDao;
//根据用户名查询用户
public User findUserByUserName(String username) {
return userDao.findByUsername(username);
}
//查询所有
public List<User> findAll(){
return userDao.findAll();
}
//添加用户
@Transactional
public User saveUser(User user) {
return userDao.save(user);
}
//根据主键id查询用户
public User findUserById(Long id){
Optional<User> u = userDao.findById(id);
User user = u.get();
return user;
}
//更新用户数据
public User updateUser(User user) {
return userDao.saveAndFlush(user);
}
//根据用户id删除用户数据
public void deleteUser(long id) {
userDao.deleteById(id);
}
}
7.controller控制层
/**用户控制层
*/
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/{username}")
public User getUser(@PathVariable("username")String username) {
return userService.findUserByUserName(username);
}
@ApiOperation(value = "用户列表",notes = "用户列表")
@RequestMapping(value = {""},method = RequestMethod.GET)
public List<User> getUser() {
return userService.findAll();
}
@ApiOperation(value = "创建用户",notes = "创建用户")
@PostMapping(value = "")
public User postUser(@RequestBody User user) {
return userService.saveUser(user);
}
@ApiOperation(value = "获取用户信息",notes = "根据url的id来获取用户信息")
@GetMapping("/i/{id}")
public User getUser(@PathVariable("id") Long id) {
return userService.findUserById(id);
}
@ApiOperation(value="更新信息",notes = "根据url的id来指定更新用户信息")
@PutMapping("/{id}")
public User putUser(@PathVariable Long id,@RequestBody User user) {
User u = new User();
u.setUsername(user.getUsername());
u.setPassword(user.getPassword());
u.setName(user.getName());
u.setId(id);
return userService.updateUser(u);
}
@ApiOperation(value="删除用户",notes = "根据url的id来指定删除用户")
@DeleteMapping(value = "/{id}")
public String deleteUser(@PathVariable Long id) {
userService.deleteUser(id);
return "success";
}
}
8.springBoot启动类:
@SpringBootApplication
public class BootthreeApplication {
public static void main(String[] args) {
SpringApplication.run(BootthreeApplication.class, args);
}
}
启动后在浏览器输入http://localhost:8080/swagger-ui.html跳转到接口文档页面: