博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SpringBoot自动配置xxxAutoConfiguration 的使用
阅读量:6844 次
发布时间:2019-06-26

本文共 2075 字,大约阅读时间需要 6 分钟。

常用的类:

@ConditionalOnProperty(name = "use.redis.session.store", havingValue = "true")@ConditionalOnClass(Session.class)@AutoConfigureAfter(RedisAutoConfiguration.class)@ConditionalOnWebApplication@ConditionalOnMissingBean(RedisHttpSessionConfiguration.class)@SpringBootApplication(exclude ={SessionAutoConfiguration.class})

 

 

举例:以MybatisAutoConfiguration为例

1. 在jar包中/META-INF/spring.factories中配置
org.springframework.boot.autoconfigure.EnableAutoConfiguration=org.mybatis.spring.boot.autoconfigure.MybatisAutoConfiguration
spring在启动时会去自动加载这个bean

2. MybatisAutoConfiguration.java上加上@Configuration

3. 如果需要通过自定义构造函数来构造bean,则加上构造函数

public MybatisAutoConfiguration(MybatisProperties properties,                                  ObjectProvider
interceptorsProvider, ResourceLoader resourceLoader, ObjectProvider
databaseIdProvider, ObjectProvider
> configurationCustomizersProvider) { this.properties = properties; this.interceptors = interceptorsProvider.getIfAvailable(); this.resourceLoader = resourceLoader; this.databaseIdProvider = databaseIdProvider.getIfAvailable(); this.configurationCustomizers = configurationCustomizersProvider.getIfAvailable();}

 

构造函数中依赖的Bean,Spring会自动从Spring beanFactory容器中去找到适配的bean来传入

参数:

MybatisProperties properties --> 依赖MybatisProperties 这个bean,而MybatisProperties 是一个@ConfigurationProperties。则加上@EnableConfigurationProperties(MybatisProperties.class),让bean MybatisProperties 先加载
ObjectProvider<Interceptor[]> interceptorsProvider --> 依赖 org.apache.ibatis.plugin.Interceptor[],但又不确定 Interceptor 的bean是否存在,则通过ObjectProvider<Interceptor[]> 去获取,interceptorsProvider.getIfAvailable()
ResourceLoader resourceLoader --> 依赖 bean ResourceLoader,直接在 Spring 容器中找到相应的 bean
ObjectProvider<DatabaseIdProvider> databaseIdProvider --> 同上
ObjectProvider<List<ConfigurationCustomizer>> configurationCustomizersProvider --> 同上

 

附:断点打在MybatisAutoConfiguration 的构造函数上,查看调用栈,便可以看出端倪

转载地址:http://rwdul.baihongyu.com/

你可能感兴趣的文章
中国不允许信息数据随意离境,或影响跨国公司
查看>>
如何消除视频监控出现的干扰?
查看>>
东芝发布OCZ TL100系列入门级SATA SSD新品:接棒TR150
查看>>
解决IT流程自动化的Brocade Workflow Composer长什么样?
查看>>
苹果还要与雅虎搜索合作?梅耶尔已经确认
查看>>
爱立信携Trukcell进行5G测试 实现24.7Gbps下载速度
查看>>
运营商拥抱OpenStack背后:距运营级仍有差距
查看>>
云翌通信联合方位、鼎信在杭州、北京的产品交流会圆满结束
查看>>
模块化数据中心的多种形式
查看>>
存储器:芯片国产化之路的第一站
查看>>
智能家居何以成CES必争之地?
查看>>
爱立信前CEO卫翰思加入Verizon 负责网络和技术部门
查看>>
计算机:政府大数据加速落地
查看>>
AT&T:ONAP将在短期内发布代码
查看>>
嘿,微软:Windows Store到底有多少应用了?
查看>>
系统宕机:设备和应用不再是大问题,人为错误是关键
查看>>
来看看Win32资源监视器在Fluent Design设计语言下的样子
查看>>
网络攻击事件频发 黑客成当前最热门的技术工作
查看>>
保护地球的"保护伞" 艾特网能再提环保
查看>>
docker(8):使用alpinelinux 构建 golang http 看看能有多小
查看>>