Springboot核心:自定义starter

发布于 2023-09-26  1145 次阅读


●1. 创建自定义starter项目,引入spring-boot-starter基础依赖
●2. 编写模块功能,引入模块所有需要的依赖。
●3. 编写xxxAutoConfiguration自动配置类,帮其他项目导入这个模块需要的所有组件
●4. 编写配置文件META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports指定启动需要加载的自动配置
●5. 其他项目引入即可使用

基本流程:

1. 基本抽取

●创建starter项目,把公共代码需要的所有依赖导入
●把公共代码复制进来
●自己写一个 RobotAutoConfiguration,给容器中导入这个场景需要的所有组件
○为什么这些组件默认不会扫描进去?
starter所在的包和 引入它的项目的主程序所在的包不是父子层级
●别人引用这个starter,直接导入这个 RobotAutoConfiguration,就能把这个场景的组件导入进来
●功能生效。
●测试编写配置文件

2.使用@EnableXxx机制

@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE})
@Documented
@Import(RobotAutoConfiguration.class)
public @interface EnableRobot {


}

别人引入starter需要使用 @EnableRobot开启功能

RobotAutoConfiguration需要写@Import注解导入组件或者其他条件注解或者注入bean实现导入

3.完全自动配置

依赖SpringBoot的SPI机制
●META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports 文件中编写好我们自动配置类的全类名即可
●项目启动,自动加载我们的自动配置类


欢迎欢迎~热烈欢迎~