自定义starter步骤:
1.创建自定义starter的业务代码:
参考如下:
HelloController类:
@RestController
public class HelloController {
@Autowired //自动注入helloService
HelloService helloService;
// sayhello请求
@GetMapping("sayHello")
public String sayHello(){
return helloService.sayHello();
}
}
HelloProperties类:
@ConfigurationProperties(prefix = "say")//绑定配置文件前缀
@Component
@Data
public class HelloProperties {
private String name;
}
HelloService类:
@Service
public class HelloService {
@Autowired//自动注入helloProperties
HelloProperties helloProperties;
public String sayHello(){
return "你好!"+helloProperties.getName();
}
}
2.导入依赖:导入此依赖,HelloProperties绑定的配置文件前缀后,再重启SpringBoot项目,当再在application.properties中配置HelloProperties的属性会有自动提示
注意:一定要重启项目!!!!
<!-- 导入配置处理器,配置文件自定义的properties配置都会有提示-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
3.删除程序启动类:因为创建自定义Starter是为了作为其他项目的包的,不需要启动项
4.仿照SpringBoot自动装配的原理,创建XxxAutoConfiguration自动装配类并导入业务组件:
@Import({HelloController.class, HelloService.class, HelloProperties.class})
@Configuration
public class HelloAutoconfiguration {
}
5
- 依赖SpringBoot的SPI机制(可自己查询SPI机制)
- META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports 文件中编写好我们自动配置类的全类名即可
- 项目启动,自动加载我们的自动配置类
此时自定义starter已经完成
6.测试
创建一个新的模块并引入自定义starter
<dependency>
<groupId>com.example</groupId>
<artifactId>autoSayHello</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
在新的模块的application.properies配置文件中可以编写自定义starter中helloProperties组件的属性
之后直接启动项目即可: