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>
浙公网安备 33010602011771号