SpringBoot使用自动配置xxxAutoConfiguration
程序员文章站
2022-03-02 15:54:37
常用的类: @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,希望对大家有所帮助。在此也非常感谢大家对网站的支持!
推荐阅读
-
使用python自动获取cisco配置信息
-
SpringBoot + Spring Security 基本使用及个性化登录配置详解
-
SpringBoot入坑笔记之spring-boot-starter-web 配置文件的使用
-
SpringBoot入坑笔记之spring-boot-starter-web 配置文件的使用
-
使用vue-cli3 创建vue项目并配置VS Code 自动代码格式化 vue语法高亮问题
-
SpringBoot + Spring Security 基本使用及个性化登录配置详解
-
SpringBoot使用Druid数据源的配置方法
-
详解Springboot配置文件的使用
-
【springboot】之自动配置原理
-
使用vue-cli3 创建vue项目并配置VS Code 自动代码格式化 vue语法高亮问题