Spring Boot 中的自动配置autoconfigure详解

 更新时间:2024年01月25日 15:30:57   作者:小宝945  
这篇文章主要介绍了Spring Boot 中的自动配置autoconfigure详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧

一、自动配置的原理

自动配置:从类路径中,搜索相关的 jar,根据 jar 的内容,尝试创建所需的对象。例如,如果有 MyBatis .jar,Spring Boot 会尝试创建 DataSource(根据配置文件中的url,username,password)连接数据库。还需要创建 SqlSessionFactory,Dao 接口的代理对象。这些内容不需要开发人员写一行代码,就能使用 MyBatis 框架了。

在这里插入图片描述

  • xxx.imports 文件是自动配置类列表。 ====> 说明有哪些自动配置类。
  • xxxAutoConfiguration 是自动配置类。====> @EnableConfigurationProperties({xxxProperties.class}) 将指定的绑定Bean注入到容器中。
  • xxxProperties 是绑定Bean。 ====> @ConfigurationProperties(prefix = “xxxx”) 说明该类是一个绑定Bean。

二、关键注解和类

1.@EnableAutoConfiguration 注解

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@AutoConfigurationPackage
@Import(AutoConfigurationImportSelector.class)
public @interface EnableAutoConfiguration {
	String ENABLED_OVERRIDE_PROPERTY = "spring.boot.enableautoconfiguration";
	Class<?>[] exclude() default {};
	String[] excludeName() default {};
}
  • 开启自动配置。将spring和第三方库中的对象创建好,注入到spring容器,避免写XML,去掉样例代码。需要使用的对象,由框架提供
  • @EnableAutoConfiguration 通常由 @SpringBootApplication 注解带入。

2.@Import 注解

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Import {
    Class<?>[] value();
}

@Import:导入类,注册为Bean。@Import 相当于 xml 文件中的 。可以导入@Configuration 的类,实现了 ImportSelector 接口的类,ImportBeanDefinitionRegister 接口的类。

3.AutoConfigurationImportSelector 类

  • AutoConfigurationImportSelector 间接实现了 ImportSelector 接口,导入自动配置类。
  • 自动配置从 jar 的指定文件读取要加载的配置类列表(xxxx.imports 文件)。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

4.@AutoConfiguration 注解

  • 新的注解 @AutoConfiguration,用在自动配置类的上面。相当于增强的 @Configuration,专注自动配置类。
  • @AutoConfiguration 还支持通过 after、afterNames、before 和 benamemes 属性进行自动配置排序,决定多个自动配置类执行的先后顺序。

5.其他相关的注解和类

  • @Configuration
  • @ConfigurationProperties
  • @EnableConfigurationProperties
  • @ConditionalXXXXX 条件注解

到此这篇关于Spring Boot 中的自动配置autoconfigure的文章就介绍到这了,更多相关Spring Boot 自动配置内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java开发工具Eclipse使用技巧全局搜索和更替

    Java开发工具Eclipse使用技巧全局搜索和更替

    这篇文章主要介绍了Java开发工具Eclipse使用技巧全局搜索和更替,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
    2018-01-01
  • Java数据结构之复杂度篇

    Java数据结构之复杂度篇

    算法复杂度分为时间复杂度和空间复杂度。其作用: 时间复杂度是度量算法执行的时间长短;而空间复杂度是度量算法所需存储空间的大小
    2022-01-01
  • Springboot死信队列 DLX 配置和使用思路分析

    Springboot死信队列 DLX 配置和使用思路分析

    死信队列简称就是DLX,死信交换机和死信队列和普通的没有区别,当消息成为死信后,如果该队列绑定了死信交换机,则消息会被死信交换机重新路由到死信队列,本文给大家介绍Springboot死信队列 DLX的相关知识,感兴趣的朋友一起看看吧
    2022-03-03
  • Java 工具类总结目录(分享)

    Java 工具类总结目录(分享)

    下面小编就为大家带来一篇Java 工具类总结目录(分享)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • JAVA Future类的使用详解

    JAVA Future类的使用详解

    这篇文章主要介绍了JAVA Future类的使用详解,帮助大家更好的理解和学习使用Java,感兴趣的朋友可以了解下
    2021-04-04
  • Springboot实现添加本地模块依赖方式

    Springboot实现添加本地模块依赖方式

    这篇文章主要介绍了Springboot实现添加本地模块依赖方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-02-02
  • Java中TypeReference用法详情说明

    Java中TypeReference用法详情说明

    这篇文章主要介绍了Java中TypeReference用法详情说明,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-07-07
  • springboot 接口版本区分方式

    springboot 接口版本区分方式

    这篇文章主要介绍了springboot 接口版本区分方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-10-10
  • Java中zip的压缩和解压缩的实现代码

    Java中zip的压缩和解压缩的实现代码

    这篇文章主要介绍了Java中zip的压缩和解压缩的实现代码,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-02-02
  • java浏览器文件打包下载过程解析

    java浏览器文件打包下载过程解析

    这篇文章主要介绍了java浏览器文件打包下载过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10

最新评论