Spring Boot的注解驱动
Spring 3.x
无配置化方式实现Bean的装配
Spring 4.x,@Conditional条件装配
@Conditional- 在某个环境下不装载,不满足某个条件的时候不装载,已经装载了不装载
- 新建类GpCondition.java实现Condition,matches()方法return true装载,return false不装载。
- 新建配置类SpringConfiguration.java增加@Configuration注解
- 装配Bean增加@Conditional(GpCondition.class)
Spring 5.x
@Indexed 提升性能,注解没有太多变化
Spring IOC bean的装载
- xml
- Configuration
- Enable
Spring 的动态Bean的装载
- ImportSelector(实现批量扫描,传入需要导入的配置类或bean)
- Registator
- 继承ImportSelector,renturn 需要装载的配置
- 自定义自动装配注解EnableConfiguration注解,增加@Import(ImportSelector)
- 启动类增加自定义注解@EnableConfiguration
classpath:META-INF/spring.factories 自动装配
- Spring Boot 定义规范,classpath:META-INF/spring.factories文件
- Spring Boot 扫描classpath*:META-INF/spring.factories文件
- 得到所有的配置类,装载到IOC
- key是:org.springframework.boot.autoconfigure.EnableAutoConfiguration
- value是:所有需要自动装配的全类名
Spring Boot自动装配
- 需要在classpath目录下创建一个resources/META-INF/services
- 在该目录下
Starter组件原理
Starter组合和自动装配有很紧密的关系
- Starter组件用到自动装配的机制 @ConditionalOnClass 官方包