spring boot 自动配置

自动配置介绍

Spring Boot自动装配(Auto Configuration)是Spring Boot框架的一个关键特性,它通过约定大于配置的方式来简化项目的配置过程。自动装配允许开发人员使用默认的配置,同时也可以根据需要进行定制化。Spring通过使用@Autowired注解、@ComponentScan注解以及条件化配置等机制,实现了自动装配的功能。

@Autowired注解: 通过在类的构造方法、成员变量或方法上使用@Autowired注解,Spring容器可以自动满足Bean之间的依赖关系。当容器启动时,它会扫描并识别带有@Autowired注解的地方,并自动装配相应的Bean。

@ComponentScan注解: 使用@ComponentScan注解可以告诉Spring容器在指定的包或类路径下扫描并注册所有标有@Component及其相关注解(如@Service@Repository等)的类作为Bean。这样,开发者无需手动在配置文件中逐个声明每个Bean,而是通过约定大于配置的方式,让Spring自动发现和注册Bean。

条件化配置: Spring Boot通过条件化配置来决定是否需要加载某个配置类或Bean。条件注解(如@ConditionalOnClass@ConditionalOnBean@ConditionalOnProperty等)在配置类上使用,根据一定的条件来判断是否满足加载的条件。

自动配置类: Spring Boot中的自动配置类通常以xxxAutoConfiguration命名的方式,它包含了一系列的Bean定义和配置,根据条件是否满足,自动配置相应的功能。这些类位于spring-boot-autoconfigure模块中。

自动配置的重要注解

  • @EnableAutoConfiguration: 这是Spring Boot自动配置的核心注解。通常在应用的主类上使用该注解,它会启用Spring Boot的自动配置机制。@EnableAutoConfiguration会根据项目的依赖关系和配置自动装配和配置Spring Bean。它通常与@SpringBootApplication一起使用,并启用自动配置机制。通过@EnableAutoConfiguration,Spring Boot会根据项目的依赖自动配置Bean。

  • @Configuration: 该注解表示一个配置类,其中定义了一些Bean的创建和配置。自动配置类通常使用@Configuration注解进行标记。类似于传统的XML配置文件。自动配置类通常会使用@Configuration注解,用于告诉Spring容器这是一个配置类。

  • @AutoConfigureAfter: 该注解指定自动配置类的加载顺序。通过指定其他自动配置类的类名,确保配置类的加载顺序正确。

  • @ConfigurationProperties: 该注解用于绑定配置属性到Java对象。可以在自动配置类及其他组件中使用,将应用程序的配置项映射到对应的属性。

  • @Bean: 用于在配置类中注册Bean。@Bean注解通常与@Configuration一起使用,在方法级别上标记一个方法返回的对象应该被注册为一个Bean。

自动配置实现

自动装配的入口:org.springframework.boot.autoconfigure.AutoConfigurationImportSelector

spring-autoconfigure-metadata.properties: 
spring-autoconfigure-metadata.properties 文件存储的是”待自动装配候选类“过滤的计算规则,这个信息很重要,框架会根据里面的规则逐一对候选类进行计算看是否需要被自动装配进容器,并不是全部加载。

spring.factories:

存储了spring-boot所有默认支持的待自动装配候选类,文件通常位于 resources/META-INF 目录下,并且以键值对的形式进行配置。每个键对应一个配置项,值则为对应配置项的实现类。

可以看一下这个博主的分享,非常的详细:

Springboot自动装配之spring-autoconfigure-metadata.properties和spring.factories(SPI机制核心)-CSDN博客

  • 19
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值