02-自动装配思维导图
2021-12-28 00:57:13 2 举报
AI智能生成
登录查看完整内容
自动装配思维导图
作者其他创作
大纲/内容
@Component:标识将启动类注册为bean
@Configuration:标识启动类是一个配置类
@SpringBootConfiguration
标识开启自动装配
添加该注解的类所在的package作为自动配置package进行管理
内部静态类Registrar#registerBeanDefinitions方法
List<String>类型
@AutoConfigurationPackage
入参AnnotationMetadata:注解元信息
AnnotationAttributes:getAttributes(annotationMetadata)获取注解属性信息
找EnableAutoConfiguration定义信息:\"META-INF/spring.factories\"
getCandidateConfigurations:获取候选配置类
removeDuplicates:配置类去重
例子(多个时逗号隔开):exclude = {DataSourceAutoConfiguration.class}
exclude
例子(需是类的全限定名,多个时逗号隔开):excludeName = {\"org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration\"
excludeName
spring.autoconfigure.exclude
getExclusions:获得待排除的类
IllegalStateException:\"The following classes could not be excluded because they are not auto-configuration classes:%n%s\"
判断要排除的类是否是自动装配配置类,不是则抛出异常
checkExcludedClasses:校验待排除的类
配置类列表删除要排除的部分
过滤器定义:\\META-INF\\spring.factories
作用:如果一个配置类依赖某个class,但是这个class在classpath下找不到,则这个配置类会被过滤,即不会作为自动装配对象
RedisCacheConfiguration: Did not match: - @ConditionalOnClass did not find required class 'org.springframework.data.redis.connection.RedisConnectionFactory' (OnClassCondition)
启动日志(debug: true):Negative matches
配置类列表再次过滤
new AutoConfigurationImportEvent
AutoConfigurationImportListener
listener.onAutoConfigurationImportEvent(event):将配置类数组保存到监听器的一个对象
fireAutoConfigurationImportEvents
selectImports:解决装配什么
\\META-INF\\spring.factories
默认配置类定义文件例子:\\spring-boot-autoconfigure-2.3.12.RELEASE.jar!\\META-INF\\spring.factories
@Import(AutoConfigurationImportSelector.class)
@EnableAutoConfiguration
标识开启组件扫描
扫描对象为启动类即引导类所在目录,及其下子目录的bean定义对象
@ComponentScan
@SpringBootApplication
SpringBoot启动类
0 条评论
回复 删除
下一页