●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 文件中编写好我们自动配置类的全类名即可
●项目启动,自动加载我们的自动配置类
Comments | NOTHING