SpringBoot使用自动配置xxxAutoConfiguration
程序员文章站
2022-06-10 15:17:30
常用的类: @conditionalonproperty(name = "use.redis.session.store", havingvalue = "true") @conditio...
常用的类:
- @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<interceptor[]> interceptorsprovider, resourceloader resourceloader, objectprovider<databaseidprovider> databaseidprovider, objectprovider<list<configurationcustomizer>> 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 的构造函数上,查看调用栈,便可以看出端倪
以上所述是小编给大家介绍的springboot使用自动配置xxxautoconfiguration,希望对大家有所帮助。在此也非常感谢大家对网站的支持!
上一篇: Nginx热部署的实现
推荐阅读
-
springboot2.0.3源码篇 - 自动配置的实现,发现也不是那么复杂
-
springboot介绍项目(springboot自动配置原理)
-
详解Springboot配置文件的使用
-
springBoot 依赖管理 自动配置,容器功能 ,以及配置常用注解详解
-
【springboot】之自动配置原理
-
Nginx的伪静态配置中使用rewrite来实现自动补全的实例
-
SpringBoot JPA使用配置过程详解
-
使用SpringBoot简单了解Druid的监控系统的配置方法
-
springboot如何使用logback-spring配置日志格式,并分环境配置
-
JAVAEE——SpringBoot日志篇:日志框架SLF4j、日志配置、日志使用、切换日志框架