2020-11-18
1.配置文件能写什么?咋写? 本文总结自动配置原理如下
配置文件能配置的属性类型参考官方文档
地址:https://docs.spring.io/spring-boot/docs/0.0.9.BUILD-SNAPSHOT/reference/pdf/spring-boot-reference.pdf (介绍在最后面的部分,拉到最下面)
2.自动配置原理
2.1当主方法启动的时候启动了@EnableAutoConfiguration 这个注解打开了自动注解的功能
2.3@EnableAutoConfiguration 里面包含了@@Import帮我们导入了配置好的组件
List configuration =getCandidateConfigurations(annotationMetadata,attributes); //获取候选的配置
从"MATA-INF/spring.factories"扫描所有jar包的路径 把扫描到的这些文件内容后整理成PROPERTIEs文件 在spring-boot导入的那个JAR包下面可以看到spring.factories里面配置的属性值EnableAutoConfiguration的一些值
2.4以下为springboot的部分自动配置属性(自动配置之源头)
Initializers
org.springframework.context.ApplicationContextInitializer=
org.springframework.boot.autoconfigure.SharedMetadataReaderFactoryContextInitializer,
org.springframework.boot.autoconfigure.logging.ConditionEvaluationReportLoggingListener
Application Listeners
org.springframework.context.ApplicationListener=
org.springframework.boot.autoconfigure.BackgroundPreinitializer
Auto Configuration Import Listeners
org.springframework.boot.autoconfigure.AutoConfigurationImportListener=
org.springframework.boot.autoconfigure.condition.ConditionEvaluationReportAutoConfigurationImportListener
Auto Configuration Import Filters
org.springframework.boot.autoconfigure.AutoConfigurationImportFilter=
org.springframework.boot.autoconfigure.condition.OnBeanCondition,
org.springframework.boot.autoconfigure.condition.OnClassCondition,
org.springframework.boot.autoconfigure.condition.OnWebApplicationCondition
Auto Configure
org.springframework.boot.autoconfigure.EnableAutoConfiguration=
org.springframework.boot.autoconfigure.admin.SpringApplicationAdminJmxAutoConfiguration,
org.springframework.boot.autoconfigure.aop.AopAutoConfiguration,
org.springframework.boot.autoconfigure.amqp.RabbitAutoConfiguration,
org.springframework.boot.autoconfigure.batch.BatchAutoConfiguration,
org.springframework.boot.autoconfigure.cache.CacheAutoConfiguration,
org.springframework.boot.autoconfigure.cassandra.CassandraAutoConfiguration,\
自动配置原理总结:在application文件中配置好属性后,spring.http.encoding 的值会被一 @conditionalOnproperty(perfix=" ")加载到spring容器中