【SpringBoot】一、建立多模块的springboot项目以及引入Swagger文档
发布:2024-01-21 14:58
更新:2024-02-25 15:11
作者:   0xdFFF
浏览:   622
分类:  Java
字数:5601

建立一个多模块的项目结构

我们一个项目一般都是由多个模块组成的,用来构建我们的微服务项目
1.建立sb项目
2.保留文件如下图
图片
3.建立模块,项目格式如下图
图片
修改parent项目的pom.xml文件为一下格式
修改打包格式、子项目模块的引用

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  4. <modelVersion>4.0.0</modelVersion>
  5. <parent>
  6. <groupId>org.springframework.boot</groupId>
  7. <artifactId>spring-boot-starter-parent</artifactId>
  8. <version>3.2.2</version>
  9. <relativePath/> <!-- lookup parent from repository -->
  10. </parent>
  11. <groupId>com.example</groupId>
  12. <artifactId>demo1</artifactId>
  13. <version>0.0.1-SNAPSHOT</version>
  14. <!-- 父模块打包类型必须为pom -->
  15. <packaging>pom</packaging>
  16. <name>demo1</name>
  17. <description>Demo project for Spring Boot</description>
  18. <properties>
  19. <java.version>21</java.version>
  20. </properties>
  21. <modules>
  22. <module>web</module>
  23. <module>api</module>
  24. <module>common</module>
  25. <module>dao</module>
  26. <module>service</module>
  27. </modules>
  28. <dependencies>
  29. <dependency>
  30. <groupId>com.example</groupId>
  31. <artifactId>web</artifactId>
  32. <version>0.0.1-SNAPSHOT</version>
  33. </dependency>
  34. <dependency>
  35. <groupId>com.example</groupId>
  36. <artifactId>common</artifactId>
  37. <version>0.0.1-SNAPSHOT</version>
  38. </dependency>
  39. <dependency>
  40. <groupId>com.example</groupId>
  41. <artifactId>dao</artifactId>
  42. <version>0.0.1-SNAPSHOT</version>
  43. </dependency>
  44. <dependency>
  45. <groupId>com.example</groupId>
  46. <artifactId>service</artifactId>
  47. <version>0.0.1-SNAPSHOT</version>
  48. </dependency>
  49. <dependency>
  50. <groupId>com.example</groupId>
  51. <artifactId>api</artifactId>
  52. <version>0.0.1-SNAPSHOT</version>
  53. </dependency>
  54. </dependencies>
  55. <build>
  56. <plugins>
  57. <plugin>
  58. <groupId>org.springframework.boot</groupId>
  59. <artifactId>spring-boot-maven-plugin</artifactId>
  60. </plugin>
  61. </plugins>
  62. </build>
  63. </project>

使用maven很慢可使用阿里源

  1. <repositories>
  2. <repository>
  3. <id>alimaven</id>
  4. <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
  5. </repository>
  6. </repositories>

父模块和子模块之间的继承

父模块

  1. <!-- 父模块的pom.xml -->
  2. <project>
  3. <groupId>com.example</groupId>
  4. <artifactId>parent-module</artifactId>
  5. <version>1.0.0</version>
  6. <dependencies>
  7. <!-- 父模块的依赖 -->
  8. <dependency>
  9. <!-- ... -->
  10. </dependency>
  11. </dependencies>
  12. </project>

子模块继承父模块,同时也会继承父模块的依赖

  1. <!-- 子模块的pom.xml -->
  2. <project>
  3. <parent>
  4. <groupId>com.example</groupId>
  5. <artifactId>parent-module</artifactId>
  6. <version>1.0.0</version>
  7. </parent>
  8. <!-- 子模块的依赖会继承父模块的依赖 -->
  9. </project>

ing 注意
如果模块之间引用,比如A模块引用B模块,那么B模块的pom.xml配置文件会被A引用,
子模块的配置信息会继承父模块的 它会自动继承父模块的依赖信息,如果子模块的配置信息包含了父模块的配置,那么父模块中相同依赖的会被子模块覆盖

引入Swagger

Swagger 是一个开源框架,用于设计、构建、文档化和消费 RESTful Web 服务。它提供了一套工具和约定,使得开发人员能够更轻松地设计和使用 REST API

首先pom.xml引入

  1. <dependency>
  2. <groupId>io.springfox</groupId>
  3. <artifactId>springfox-swagger2</artifactId>
  4. <version>2.6.1</version>
  5. </dependency>
  6. <dependency>
  7. <groupId>io.springfox</groupId>
  8. <artifactId>springfox-swagger-ui</artifactId>
  9. <version>2.6.1</version>
  10. </dependency>

配置一个Swagger路径

  1. @Configuration
  2. @EnableSwagger2
  3. public class SwaggerConfig {
  4. @Bean
  5. public Docket createRestApi(){
  6. return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo())
  7. .select()
  8. .apis(RequestHandlerSelectors.basePackage("com.example.web"))
  9. .paths(PathSelectors.any())
  10. .build();
  11. }
  12. private ApiInfo apiInfo(){
  13. return new ApiInfoBuilder()
  14. .title("Swagger Test Api")
  15. .description("Restful Api测试")
  16. .version("1.0")
  17. .build();
  18. }
  19. }

配置swagger接口的介绍描述

@Api 注解标注在类上用来描述整个 Controller 信息。
@ApiOperation 注解标注在方法上,用来描述一个方法的基本信息。
@ApiImplicitParam 注解标注在方法上,用来描述方法的参数。其中 paramType 是指方法参数的类型,有如下可选值:
path:参数获取方式为 @PathVariable,这个是从路径获取参数
query:参数获取方式为 @RequestParam
header:参数获取方式为 @RequestHeader
(4)如果有多个参数,可以将多个参数的 @ApiImplicitParam 注解放到 @ApiImplicitParams 中。
(5)@ApiResponse 是对响应结果的描述。code 表示响应码,message 为相应的描述信息。如果有多个 @ApiResponse,则放在一个 @ApiResponses 中。
(6)@ApiIgnore 注解表示不对某个接口生成文档。

  1. @RestController
  2. @Api("用户接口")
  3. public class Controller {
  4. @Autowired
  5. private UserServiceImpl userService;
  6. @ApiOperation(value = "查询用户",notes = "根据用户名查询用户")
  7. @GetMapping("/test/{username}")
  8. public UserDto test(@PathVariable String username){
  9. return userService.GetUser(username);
  10. }
  11. @GetMapping("/add/{username}")
  12. public String test2(@PathVariable String username){
  13. userService.AddUser(new UserDto(username,"xx"));
  14. return "tes2";
  15. }
  16. }

图片

-- 完结 --