谈到 springboot 的外围机制,即 主动拆卸 。
主动拆卸是在服务初始化时,主动将须要的组件注入到 IOC 容器种,以待后续的应用。
步骤:
- 获取各组件种 META-INF/spring.factories 文件
- 依据其中 value 值(其 value 为类名),通过反射形式创立实体类
- 将实体类注入到 IOC 容器中,待后续应用。
这就是主动拆卸的三板斧。
为了便于了解主动拆卸,可通过本人实现 starter jar 来了解。
-
创立 starter 包 – 创立 Empty Project 及 module,命名其为 xxx-starter
①定义配置文件标准及对应对象类,比方我规定波及我的 starter 的配置构造为 cyz.pro// 此注解相似 @Value,能获取到配置文件中的配置条目 @ConfigurationProperties(prefix = "cyz") public class PrefixPojo { private String pro; public String getPro() {return pro;} public void setPro(String pro) {this.pro = pro;} }
②编写配置组件类,将配置对象搁置到容器中。只有申明为组件,便会注入到 IOC 容器中。
@Configuration @EnableConfigurationProperties(value = PrefixPojo.class) @ConditionalOnWebApplication // 示意 web 利用条件下激活 public class PrefixConfiguration { PrefixPojo pojo; @Autowired public PrefixConfiguration(PrefixPojo pojo) {this.pojo = pojo;} public String service(){return pojo.getPro() + "!!"; } }
③在 resource 门路创立“META-INF”门路,创立 spring.factories 文件,指定 组件类
org.springframework.boot.autoconfigure.EnableAutoConfiguration = \ pro.yizheng.yizhengstarter.config.PrefixConfiguration
-
将其导出为 jar
①其 pom 如下:<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional> </dependency>
②通过 maven install 命令将此工程打到 maven 库中
至此,自定义 starter 步骤完结。
应用时引入相干依赖即可。