谈到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步骤完结。
应用时引入相干依赖即可。