Spring Boot自动配置相关知识

本文介绍Spring Boot自动配置相关知识

Spring 3.0开始,Spring提供了Java Config的方式,进行Spring bean的创建

@Configuration
public class DemoConfiguration {

    @Bean
    public void object() {
        return new Obejct();
    }
}
  • 通过在类上添加 @Configuration 注解,声明这是一个 Spring 配置类。
  • 通过在方法上添加 @Bean 注解,声明该方法创建一个 Spring Bean。

在Spring Boot中也可以使用上述注解进行Bean的配置。

  • 配置类:在类上添加了 @Configuration 注解,声明这是一个配置类
  • 条件注解:在类上添加了 @ConditionalOnWebApplication 条件注解
  • 配置属性:使用@ConfigurationProperties 注解声明配置属性类和 @EnableConfigurationProperties 注解让配置属性类生效

自动配置
上面的介绍仅仅是解决了配置的问题,Spring Boot是如何实现自动配置的呢?

@SpringBootApplication 注解中有 @EnableAutoConfiguration 这样一个注解。而@EnableAutoConfiguration 这个注解看名字就知道是启用自动配置注解

@EnableAutoConfiguration

@EnableAutoConfiguration使用@Import添加了一个AutoConfigurationImportSelector类,Spring自动注入配置的核心功能就依赖于这个对象。

在这个类中,提供了一个getCandidateConfigurations()方法用来加载配置文件。借助Spring提供的工具类SpringFactories的loadFactoryNames()方法加载配置文件。扫描的默认路径位于META-INF/spring.factories中。

路径
原先 @Configuration 注解的配置类,就升级成类自动配置类。这样,Spring Boot 在获取到需要自动配置的配置类后,就可以自动创建相应的 Bean,完成自动配置的功能。

AutoConfigurationImportSelector类中的getAutoConfigurationEntry()方法
调用
ConfigurationClassPostProcessor类实现了BeanDefinitionRegistryPostProcessor接口。
而在Spring刷新容器时,会实例化BeanDefinitionRegistryPostProcessor接口的实现类,并调用它的postProcessBeanDefinitionRegistry方法在这里插入图片描述
ConfigurationClassPostProcessor类的postProcessBeanDefinitionRegistry调用了ConfigurationClassParser类的getImports方法,该方法会调用AutoConfigurationImportSelector的process方法进行自动配置类的导入和过滤。
在这里插入图片描述
在这里插入图片描述
ConfigurationClassParser类起到解析配置类的作用
ConfigurationClassPostProcessor类中会将解析的配置类注入到Spring IOC容器
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值