关于spring-boot的自动配置原理

    对于初入编程的准程序猿,相信大家对SSM的集成再熟悉不过了,无论是使用xml配置还是使用java代码配置,这些需要手动配置的也比较多,比较麻烦;正是如此,spring-boot这个框架应运而生,我们使用spring-boot框架能够更快的搭建SSM项目,而对于这个框架需要我们配置的也是减少了许多;相信用过的小伙伴都知道,这个框架的使用简单的优点,就像官方所说的“just run”。但是对于spring-boot的自动配置这方面的底层原理,对于准程序猿可能还是在会使用而不了解其原理的状态;因此本文对spring-boot的自动配置进行一定程度的讲解:

    spring-boot项目中的starter依赖能够自动将第三方框架集成到项目中,也就是我们说的自动配置;自动配置的源码在spring-boot-autoconfigure累路径下:

@SpringBootConfiguration:标记当前类为配置类
@EnableAutoConfiguration:开启自动配置
@ComponentScan:扫描主类所在的同级包以及下级包里的Bean

@Configuration
@ConditionalOnClass({SqlSessionFactory.class, SqlSessionFactoryBean.class})
要求有一个DataSource的Bean
@ConditionalOnSingleCandidate(DataSource.class)
启动配置属性,关联了一个配置属性类
@EnableConfigurationProperties({MybatisProperties.class})
指定在某些自动配置类之后执行自动配置
@AutoConfigureAfter({DataSourceAutoConfiguration.class, MybatisLanguageDriverAutoConfiguration.class})
public class MybatisAutoConfiguration implements InitializingBean {
    private static final Logger logger = LoggerFactory.getLogger(MybatisAutoConfiguration.class);
    映射的propertis文件属性
    private final MybatisProperties properties;
    ...
    ...

igurationCustomizersProvider.getIfAvailable();

 该底层配置类中会帮我们创建一个SQLSessionFactory,并且注册成springBean

    @Bean
    @ConditionalOnMissingBean
    public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {
        SqlSessionFactoryBean factory = new SqlSessionFactoryBean();
        factory.setDataSource(dataSource);
        ...
        ...

        return factory.getObject();
    }

自动配置属性类MybatisProperties能获取properties文件中的信息。 

至此也就是spring-boot的自动装配原理。

SpringBoot自动装配原理是通过扫描外部引用jar包中的META-INF/spring.factories文件来加载配置信息,并将配置的类型信息加载到Spring容器中,并执行相应的操作。\[1\]在SpringBoot中,我们只需引入对应的starter依赖,就可以自动完成对第三方依赖的配置操作,无需手动编写特定的bean。\[1\] 具体实现原理是通过在resources目录下创建一个spring.factories文件,文件中配置了需要自动装配的类的全限定名,使用@EnableAutoConfiguration注解来启用自动装配。\[2\]在SpringBoot的主启动类上使用@SpringBootApplication注解,该注解包含了@SpringBootConfiguration、@ComponentScan和@EnableAutoConfiguration三个注解。其中@SpringBootConfiguration注解表示该类是SpringBoot配置类,@ComponentScan注解用于扫描被@Component注解的bean,@EnableAutoConfiguration注解是自动装配的核心注解。\[3\] 总结起来,SpringBoot自动装配原理是通过扫描外部引用jar包中的配置文件,加载配置信息,并根据配置信息自动完成对第三方依赖的配置操作,简化了开发者的配置工作。 #### 引用[.reference_title] - *1* *2* *3* [Springboot自动装配原理](https://blog.csdn.net/weixin_43324905/article/details/123949084)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值