SpringBootAutoConfiguration

67 阅读2分钟

前置知识体系

1.配置管理

@ImportResource 导入XML文件

@Import 导入指定类文件

@Value 默认是application.yml特殊文件,如果更改文件只能在类上用@propertySource指定.propeties文件

@EnableConfigurationProperties指定的类启用@configurationProperties生成getter,setter,构造器,toString等方法(备注:这里的@configurationProperties指定的类生成的类可以通过getter/setter获取yml文件的值)

2.自动配置

@EnableAutoConfiguration 在SpringBoot框架中,使用enable开头的注解,表示开启xx,所以这个注解是开启自动配置。这个注解在SpringBoot应用的启动类上的@SpringBootApplication的底层注解下就有,还有其他两个,分别是@AutoConfigurationPackage,注册自动配置的包,如果不配置就是所在类的包,@import导入指定类

@AutoConfiguration 这个注解是组合注解,结合了@AutoConfigBefore自动配置在XXX之前和@AutoConfigAfter自动配置在XXX之后,configuration配置类注解(备注:配置类是Spring核心注解之一)

@ConditionalOn * 这个注解是条件注解 conditional基础条件注解,conditionalOnClass 指定的类开启,conditionalOnMissingClass没有指定的类开启,conditionalOnBean指定的Bean开启,conditionalOnMissingClass没有指定的Bean的类开启,ConditionalOnProperty指定的参数开启,conditionalOnJava指定的JDK的版本才开启,conditionOnWebApplication指定的web应用开启,ConditionOnResource指定的资源开启,conditionalOnNotWebApplication不指定web应用类型才开启自动配置

综上所述:只有@EnableConfigurationProperties指定的类才可以获取yml的值,如果没有是否存在条件注解指定的类或接口去继承或开启

Servlet

org.springframework.boot.autoconfigure.web.servlet.DispatcherServletAutoConfiguration
org.springframework.boot.autoconfigure.web.servlet.ServletWebServerFactoryAutoConfiguration
org.springframework.boot.autoconfigure.web.servlet.error.ErrorMvcAutoConfiguration
org.springframework.boot.autoconfigure.web.servlet.HttpEncodingAutoConfiguration
org.springframework.boot.autoconfigure.web.servlet.MultipartAutoConfiguration
org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration
  • DispatcherServletAutoConfiguration:视图控制器
  • ServletWebServerFactoryAutoConfiguration:Servlet web工厂
  • ErrorMvcAutoConfiguration:错误处理
  • HttpEncodingAutoConfiguration: HTTP相关配置
  • MultipartAutoConfiguration 上传文件相关配置
  • WebMvcAutoConfiguration 网络相关配置

JDBC

org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration
org.springframework.boot.autoconfigure.jdbc.JdbcTemplateAutoConfiguration
org.springframework.boot.autoconfigure.jdbc.JndiDataSourceAutoConfiguration
org.springframework.boot.autoconfigure.jdbc.XADataSourceAutoConfiguration
org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration
  • DataSourceAutoConfiguration: 基于JDBC数据源自动配置
  • JdbcTemplateAutoConfiguration:基于JdbcTemplate操作数据库
  • JndiDataSourceAutoConfiguration:基于JNDI数据源自动配置
  • XADataSourceAutoConfiguration:基于XA二阶性提交协议的分布式数据源
  • DataSourceTransactionManagerAutoConfiguration:事务管理器

Redis

org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration
org.springframework.boot.autoconfigure.data.redis.RedisReactiveAutoConfiguration
org.springframework.boot.autoconfigure.data.redis.RedisRepositoriesAutoConfiguration
  • RedisAutoConfiguration:Redis数据源配置
  • RedisReactiveAutoConfiguration:Redis响应式编程
  • RedisRepositoriesAutoConfiguration:Redis仓库模式