- @Import(RobotAutoConfiguration.class)第一层抽取
- 创建starter项目,把公共代码需要的所有依赖导入
- 把公共代码复制进来
- 自己写一个
RobotAutoConfiguration
,给容器中导入这个场景需要的所有组件(就是把组件放到容器中)- 为什么这些组件默认不会扫描进去?
- starter所在的包和 引入它的项目的主程序所在的包不是父子层级
- 别人引用这个
starter
,直接导入这个RobotAutoConfiguration
,就能把这个场景的组件导入进来
-
使用@EnableXxx机制(就是这个注解帮你写了@Import(RobotAutoConfiguration.class)这个注解)第二层抽取(这个就是自定义一个和系统一样的格式的注解)
@Retention(RetentionPolicy.RUNTIME) @Target({ElementType.TYPE}) @Documented @Import(RobotAutoConfiguration.class) public @interface EnableRobot { }
-
自定义配置有提示,需要在自定义starter里导入
<!-- 导入配置处理器,配置文件自定义的properties配置都会有提示--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional> </dependency>
也可在需要的项目下导入,
-
完全自动配置(第三层抽取)
- 依赖SpringBoot的SPI机制
- META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports(这个文件是建在resources) 文件中编写好我们自动配置类的全类名即可
- 项目启动,自动加载我们的自动配置类
自定义starter
最新推荐文章于 2024-08-24 22:01:16 发布