SpringBoot使用自动配置xxxAutoConfiguration

作者:快鸟 时间:2022-11-20 09:05:56 

常用的类:

  • @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网站的支持!

来源:https://www.cnblogs.com/kevin-yuan/p/9173059.html

标签:SpringBoot,自动,配置,xxxAutoConfiguration
0
投稿

猜你喜欢

  • java实现文件上传下载和图片压缩代码示例

    2023-01-02 17:49:30
  • springboot 如何解决yml没有spring的小叶子标志问题

    2021-06-12 02:57:01
  • 详解WPF中用户控件和自定义控件的使用

    2023-07-25 12:20:26
  • Java Set集合去重的原理及实现

    2023-08-11 10:56:11
  • 替换so文件来动态替换Flutter代码实现详解

    2023-06-23 16:24:06
  • Android WebView实现顶部进度条

    2023-10-14 23:44:03
  • Java中的static关键字修饰属性和方法(推荐)

    2021-09-29 05:46:20
  • Java并发编程之线程安全性

    2021-12-22 07:43:41
  • 详解LeakCanary分析内存泄露如何实现

    2022-12-03 22:04:40
  • 基于JAVA代码 获取手机基本信息(本机号码,SDK版本,系统版本,手机型号)

    2023-04-04 14:37:43
  • Android编程基于自定义View实现绚丽的圆形进度条功能示例

    2023-07-24 17:13:26
  • Android通过记住密码功能学习数据存储类SharedPreferences详解及实例

    2023-05-21 21:37:49
  • Java实现字符串解析为日期时间的方法示例

    2021-10-29 17:43:34
  • springboot 启动如何排除某些bean的注入

    2022-01-20 18:36:01
  • Spring Security账户与密码验证实现过程

    2023-03-04 21:54:37
  • C#实现控制线程池最大数并发线程

    2023-02-23 14:50:43
  • Java swing实现酒店管理系统

    2021-08-08 02:24:12
  • C#使用NPOI实现Excel导入导出功能

    2022-11-01 22:36:19
  • 浅谈Java锁机制

    2022-01-09 00:58:56
  • IDEA怎么生成UML类图的实现

    2023-12-07 15:40:21
  • asp之家 软件编程 m.aspxhome.com