Spring Boot核心特性与设计思想

778 阅读1分钟

Spring Boot的注解驱动

Spring 3.x

无配置化方式实现Bean的装配

Spring 4.x,@Conditional条件装配

  • @Conditional
  • 在某个环境下不装载,不满足某个条件的时候不装载,已经装载了不装载
  1. 新建类GpCondition.java实现Condition,matches()方法return true装载,return false不装载。
  2. 新建配置类SpringConfiguration.java增加@Configuration注解
  3. 装配Bean增加@Conditional(GpCondition.class) image.png image.png image.png

image.png

Spring 5.x

@Indexed 提升性能,注解没有太多变化

Spring IOC bean的装载

  • xml
  • Configuration
  • Enable

Spring 的动态Bean的装载

  • ImportSelector(实现批量扫描,传入需要导入的配置类或bean)
  • Registator
  1. 继承ImportSelector,renturn 需要装载的配置 image.png
  2. 自定义自动装配注解EnableConfiguration注解,增加@Import(ImportSelector) image.png
  3. 启动类增加自定义注解@EnableConfiguration image.png

classpath:META-INF/spring.factories 自动装配

  1. Spring Boot 定义规范,classpath:META-INF/spring.factories文件
  2. Spring Boot 扫描classpath*:META-INF/spring.factories文件
  3. 得到所有的配置类,装载到IOC
  • key是:org.springframework.boot.autoconfigure.EnableAutoConfiguration
  • value是:所有需要自动装配的全类名 image.png image.png

Spring Boot自动装配

  • 需要在classpath目录下创建一个resources/META-INF/services
  • 在该目录下

image.png

Starter组件原理

Starter组合和自动装配有很紧密的关系

  • Starter组件用到自动装配的机制 @ConditionalOnClass 官方包

Acturator