第二十五节 SpringBoot开发自定义Starter
整体项目结构
一、开发autoconfigure模块
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模块
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>
三、使用自定义的starter
最后,创建一个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成功。
四、源码下载
本章节项目源码:点我下载源代码