autoconfigure用于在starter初始化得时候,加载配置配置文件或者执行一些指定的功能。
(1)autoconfigure模块需要的需要三个固定的依赖
<!-- 导入SpringBoot WEB开发环境 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- 用于开发starter:自动配置注解 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-autoconfigure</artifactId> </dependency> <!-- 用于开发starter:开发自定义提示--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> </dependency>(2)编写一个spring.factories文件。它指定当autoconfigure被引入时,会加载下面配置的AutoConfigureConfig这个类。
#用逗号隔开 org.springframework.boot.autoconfigure.EnableAutoConfiguration =com.zhoutianyu.learnspringboot.config.AutoConfigureConfig@Configuration注解表明它是一个配置类。它会初始化一个SystemInit类,然后调用此类的init方法。
@EnableConfigurationProperties这个注解将DemoProperties文件引入Spring容器。
@Configuration @ConditionalOnClass(SystemInit.class) @EnableConfigurationProperties(DemoProperties.class) public class AutoConfigureConfig { @Bean(initMethod = "init") @ConditionalOnMissingBean public SystemInit systemInit() { return new SystemInit(); } } @ConfigurationProperties(prefix = "demo") @Data public class DemoProperties { private String message; } public class SystemInit { public void init() { System.out.println("SystemInit类正在始化中...."); } }starter模块就是引入上面得autoconfigure模块即可。
<dependencies> <!-- starter项目导入最基本的SpringBoot依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> <version>2.2.5.RELEASE</version> </dependency> <!-- 导入自动配置JAR--> <dependency> <groupId>com.zhoutianyu</groupId> <artifactId>demo-spring-boot-autoconfigure</artifactId> <version>1.0.0</version> </dependency> </dependencies>最后,创建一个SpringBoot项目。它导入我们得自定义starter。
<!-- 导入自定义starter--> <dependency> <groupId>com.zhoutianyu</groupId> <artifactId>demo-spring-boot-starter</artifactId> <version>1.0.0</version> </dependency>我们在application.yml配置文件里,配置第一步中的DemoProperties类。
server: port: 8081 ... demo: message: hello-starter最后,编写一个Controller,使用DemoProperties。
@RestController @RequiredArgsConstructor public class UserController { private final DemoProperties properties; @GetMapping(value = "/get") public String function() { return properties.getMessage(); } }启动项目,并访问http://localhost:8081/study/springboot/get ,返回与application.yml中指定配置,说明集成自定义SpringBoot-starter成功。
本章节项目源码:点我下载源代码
目录贴:跟着大宇学SpringBoot-------目录帖