自动配置原理
- 类上面有了@Configuration后才是配置类,或辅助类被标记过@Configuration。(后者又称为替代注解)。
spring boot底层共有100多个配置类,他们都是通过AutoConfigurationImportSelector类来确定时候起作用,在这个类中有一个selectImport方法:“选择导入”,此方法中调用getAutoConfigurationEntry可以拿到一些配置,继续往下走是通过EnableAutoConfiguration类来加载了一些配置,拿到他们的全限定名后到spring-boot-autoconfigure中的META-INF的spring.factories中可以查到同名key,它的value是各种配置类,其中每一个类都相当于一个配置文件。
eg:打开WebMvcAutoConfiguration配置类看一看
- 满足@ConditionalOn…才会被选中
- @Bean可以声明一个Bean对象
- 在容器中单例模式的Bean可以使用@ConditionalOnMissingBean
- 视图解析器defaultViewResovler方法
每一个配置类都有一个对应的属性类“properties”,找到并打开后就可以知道如何在application.properties或.yml中进行配置。
ThymeleafAutoConfiguration
用来视图解析.html
- 需要引入依赖thymeleaf
spring-boot-starter-thymeleaf
- 此配置类中有新的视图解析器:ThymeleafViewResolver,找到它的属性类,可以看到默认的视图解析器。
总结
- 判断此配置类是否满足要求被选中。
- 若起作用,则声明一些bean,如:字符编码过滤器,核心控制器等。
- 看其具体bean的属性类。