springboot分模块后台系统开发详细过程

新建maven项目(父项目)

父项目下面新建模块--》maven模块

父模块设置

 1 <packaging>pom</packaging> 

父模块引入依赖管理----<dependencyManagement>

注意:这两个需要加上

<type>pom</type>
<scope>import</scope>
 1 <dependencyManagement>
 2         <dependencies>
 3             <dependency>
 4                 <groupId>org.springframework.boot</groupId>
 5                 <artifactId>spring-boot-dependencies</artifactId>
 6                 <version>2.2.12.RELEASE</version>
 7                 <!-- 注明是引入父模块 -->
 8                 <type>pom</type>
 9                 <!-- 注明引入父模块的jar包 -->
10                 <scope>import</scope>
11             </dependency>
12         </dependencies>
13 </dependencyManagement>

父模块引入公共模块

 1 <dependencies>
 2         <!--Lombok-->
 3         <dependency>
 4             <groupId>org.projectlombok</groupId>
 5             <artifactId>lombok</artifactId>
 6             <scope>provided</scope>
 7         </dependency>
 8         <!-- swagger2-->
 9         <dependency>
10             <groupId>io.springfox</groupId>
11             <artifactId>springfox-swagger2</artifactId>
12             <version>${swagger.version}</version>
13             <exclusions>
14                 <exclusion>
15                     <groupId>io.swagger</groupId>
16                     <artifactId>swagger-annotations</artifactId>
17                 </exclusion>
18                 <exclusion>
19                     <groupId>io.swagger</groupId>
20                     <artifactId>swagger-models</artifactId>
21                 </exclusion>
22             </exclusions>
23         </dependency>
24         <!--防止进入swagger页面报类型转换错误,排除2.9.2中的引用,手动增加1.5.21版本-->
25         <dependency>
26             <groupId>io.swagger</groupId>
27             <artifactId>swagger-annotations</artifactId>
28             <version>1.5.21</version>
29         </dependency>
30 
31         <dependency>
32             <groupId>io.swagger</groupId>
33             <artifactId>swagger-models</artifactId>
34             <version>1.5.21</version>
35         </dependency>
36         <!-- swagger2-UI-->
37         <dependency>
38             <groupId>io.springfox</groupId>
39             <artifactId>springfox-swagger-ui</artifactId>
40             <version>${swagger.version}</version>
41         </dependency>
42     </dependencies>

父模块将编译的java版本和项目的java版本设置为一致

 1 <build>
 2         <plugins>
 3             <!-- 将编译的java版本和项目的java版本设置为一致 -->
 4             <plugin>
 5                 <groupId>org.apache.maven.plugins</groupId>
 6                 <artifactId>maven-compiler-plugin</artifactId>
 7                 <version>3.1</version>
 8                 <configuration>
 9                     <source>${java.version}</source>
10                     <target>${java.version}</target>
11                     <encoding>${project.build.sourceEncoding}</encoding>
12                 </configuration>
13             </plugin>
14         </plugins>
15     </build>

framework子模块依赖引入

 1 <artifactId>framwork</artifactId> 

1 <dependencies>
2         <dependency>
3             <groupId>org.springframework.boot</groupId>
4             <artifactId>spring-boot-starter-web</artifactId>
5         </dependency>
6 </dependencies>

admin子模块依赖引入

生命周期范围--<scope>compile</scope>

 1 <parent>
 2         <artifactId>fullSpringBootProject</artifactId>
 3         <groupId>org.example</groupId>
 4         <version>1.0-SNAPSHOT</version>
 5 </parent>
 6 <modelVersion>4.0.0</modelVersion>
 7 <packaging>jar</packaging>
 8 <artifactId>admin</artifactId>
 9 
10     <dependencies>
11         <dependency>
12             <groupId>org.example</groupId>
13             <artifactId>framwork</artifactId>
14             <version>1.0-SNAPSHOT</version>
15         </dependency>
16         <dependency>
17             <groupId>org.example</groupId>
18             <artifactId>common</artifactId>
19             <version>1.0-SNAPSHOT</version>
20             <scope>compile</scope>
21         </dependency>
22     </dependencies>

admin子模块建目录

 

 

 admin子模块创建AdminApplication启动类

 1 @ComponentScan(basePackages = {"com.wxadmin.web.controller",
 2                                 "com.wxcommon.core",
 3                                 "com.wxsystem.mapper"})
 4 @MapperScan("com.wxsystem.mapper")
 5 
 6 //@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })
 7 @SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })
 8 public class AdminApplication {
 9     public static void main(String[] args) {
10         SpringApplication.run(AdminApplication.class,args);
11         System.out.println("系统启动成功!");
12     }
13 }

admin模块resource目录下建立application.yml配置文件

 配置swagger2

swagger:
  enabled: true
  #pathMapping: /test

创建SwaggerConfig配置类

 1 //标志为一个配置类
 2 @Configuration
 3 //开启配置
 4 @EnableSwagger2
 5 public class SwaggerConfig {
 6 
 7     @Autowired
 8     private SysBasicInfoConfig sysBasicInfoConfig;
 9 
10     /** 是否开启swagger */
11     @Value("${swagger.enabled}")
12     private boolean enabled;
13 
14     /** 设置请求的统一前缀 */
15     @Value("${swagger.pathMapping}")
16     private String pathMapping;
17 
18     @Bean
19     public Docket createRestApi()
20     {
21         return new Docket(DocumentationType.SWAGGER_2)
22                 // 是否启用Swagger
23                 .enable(enabled)
24                 // 用来创建该API的基本信息,展示在文档的页面中(自定义展示的信息)
25                 .apiInfo(apiInfo())
26                 // 设置哪些接口暴露给Swagger展示
27                 .select()
28                 // 扫描所有有注解的api,用这种方式更灵活
29                 .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
30                 // 扫描指定包中的swagger注解
31                 // .apis(RequestHandlerSelectors.basePackage("com.joolun.project.tool.swagger"))
32                 // 扫描所有 .apis(RequestHandlerSelectors.any())
33                 .paths(PathSelectors.any())
34                 .build();
35                 /* 设置安全模式,swagger可以设置访问token */
36                 //.securitySchemes(securitySchemes())
37                 //.securityContexts(securityContexts())
38                 //.pathMapping(pathMapping);
39     }
40     /**
41      * 添加摘要信息
42      */
43     private ApiInfo apiInfo()
44     {
45         // 用ApiInfoBuilder进行定制
46         return new ApiInfoBuilder()
47                 // 设置标题
48                 .title("标题:系统接口文档")
49                 // 描述
50                 .description("描述:用于管理集团旗下公司的人员信息,具体包括XXX,XXX模块...")
51                 // 作者信息
52                 //.contact(new Contact(sysBasicInfoConfig.getName(), null, null))
53                 .contact(new Contact("Husong", null, null))
54                 // 版本
55                 //.version("版本号:" + sysBasicInfoConfig.getVersion())
56                 .version("版本号:" + "V1.0")
57                 .build();
58     }
59 }

admin模块创建controller

 创建测试swagger

 1 //swagger的注解
 2 @Api
 3 @RestController
 4 public class TestController {
 5     @ApiOperation(value = "desc of method", notes = "test")
 6     @GetMapping("/test")
 7     public String Test(){
 8         return "hello";
 9     }
10 }

测试swagger

访问--》http://localhost:8080/swagger-ui.html

 springboot结合log4j2

 除去依赖的logback

 

 

 添加log4j2

 

 

 

 1 <dependencies>
 2             <dependency>
 3                 <groupId>org.springframework.boot</groupId>
 4                 <artifactId>spring-boot-dependencies</artifactId>
 5                 <version>2.2.12.RELEASE</version>
 6                 <!-- 注明是引入父模块 -->
 7                 <type>pom</type>
 8                 <!-- 注明引入父模块的jar包 -->
 9                 <scope>import</scope>
10                 <exclusions>
11                     <exclusion>
12                         <groupId>org.springframework.boot</groupId>
13                         <artifactId>spring-boot-starter-logging</artifactId>
14                     </exclusion>
15                 </exclusions>
16             </dependency>
17             <dependency>
18                 <groupId>org.springframework.boot</groupId>
19                 <artifactId>spring-boot-starter-log4j2</artifactId>
20                 <version>${log4j2.version}</version>
21             </dependency>
22         </dependencies>

添加测试类

 

 

 

 1 <dependency>
 2             <groupId>org.springframework.boot</groupId>
 3             <artifactId>spring-boot-starter-test</artifactId>
 4             <scope>test</scope>
 5             <exclusions>
 6                 <exclusion>
 7                     <artifactId>spring-boot-starter-logging</artifactId>
 8                     <groupId>org.springframework.boot</groupId>
 9                 </exclusion>
10             </exclusions>
11         </dependency>

创建测试类

 

 

 

 

 

 

 1 @RunWith(SpringRunner.class)
 2 @SpringBootTest(classes = AdminApplication.class)
 3 public class Test {
 4     public final Logger LOGGER = LogManager.getLogger(Test.class);
 5     @org.junit.Test
 6     public void test1() throws Exception{
 7         LOGGER.fatal("fatal");
 8         LOGGER.error("error");
 9         LOGGER.warn("waen");
10         LOGGER.info("info");
11         LOGGER.debug("debug");
12     }
13 }

配置异步输出日志

1 <!-- log4j2异步输出日志 -->
2             <dependency>
3                 <groupId>com.lmax</groupId>
4                 <artifactId>disruptor</artifactId>
5                 <version>${com.lmax.version}</version>
6             </dependency>

log4j2-spring.xml配置

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!--级别warn 自动加载配置时间间隔不低于30秒-->
 3 <Configuration status="warn" monitorInterval="30">
 4     <!-- 日志存放路径 -->
 5     <properties>
 6         <property name="LOG_HOME">E:/program/java/fullSpringBootProject/loggingFile</property>
 7     </properties>
 8     <Appenders>
 9         <!-- <Console name="Console" target="SYSTEM_ERR"> 控制台输出颜色红色-->
10         <Console name="Console" target="SYSTEM_ERR">
11             <PatternLayout pattern="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n"></PatternLayout>
12         </Console>
13         <File name="file" FileName="${LOG_HOME}/myfile.log">
14             <PatternLayout pattern="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n"></PatternLayout>
15         </File>
16 
17         <!--  随机读写流的日志文件输出,提高性能  -->
18         <RandomAccessFile name="accessFile" fileName="${LOG_HOME}/myAccLog.log">
19             <PatternLayout pattern="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n"></PatternLayout>
20         </RandomAccessFile>
21         <!--  按照一定规则拆分日志文件  -->
22         <RollingFile name="rollingFile" fileName="${LOG_HOME}/myrollog.log"
23                      filePattern="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n">
24             <!--  日志级别过滤  匹配的接受      -->
25             <ThresholdFilter level="debug" onMatch="ACCEPT" onMismatch="DENY" />
26             <PatternLayout pattern="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n"></PatternLayout>
27             <Policies>
28             <!--  系统启动时候触发拆分规则,新建log文件-->
29                 <OnStartupTriggeringPolicy></OnStartupTriggeringPolicy>
30             <!--  按照文件大小拆分-->
31                 <SizeBasedTriggeringPolicy size="10 MB" />
32             <!--  按照时间节点拆分,filePattern定义的规则-->
33                 <TimeBasedTriggeringPolicy></TimeBasedTriggeringPolicy>
34             </Policies>
35             <!--  同一个目录下面,文件的最多个数 超过进行覆盖-->
36             <DefaultRolloverStrategy max="30" />
37         </RollingFile>
38     </Appenders>
39 
40     <loggers >
41     <!--  使用rootlogger配置 -->
42         <Root level="warn">
43             <AppenderRef ref="file"/>
44         </Root>
45     <!--  混合异步输出日志  去掉行号 提升性能  additivity="false"表示不继承rootlogger-->
46         <AsyncLogger name="com.husong" level="trace" includeLocation="false" additivity="false">
47             <AppenderRef ref="file" />
48         </AsyncLogger>
49     </loggers>
50 </Configuration>

 

posted @ 2021-12-05 17:30  Hu_note  阅读(516)  评论(0)    收藏  举报