springBoot自动装配流程

本文介绍了SpringBoot的自动装配机制,包括其基于SPI的原理,以及如何通过`spring.factories`和新的`AutoConfiguration.imports`方式加载自动配置类。特别详细讲解了mybatis的自动装配过程,涉及配置类、自动装配类和Mapper的扫描和注入。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.什么是自动装配
    简单来说就是,通过SpringBoot提供的自动装配机制可以简化对接Spring的配置,减少配置文件,只需要配置到application.properties一个文件里就行了。
    
2.有什么好处

    就是简化配置
    
    例如以前要用mybatis,不仅要配Spring的配置文件,还要配置mybatis的配置文件,很麻烦。现在只需要引入自动装配的starter就行了,直接配置几个参数就行。
    
3.原理是什么
    基于Spring的spi机制来实现。
    a.实现自动装配的属性类。
    b.实现自动装配的类。
    c.META-INF\spring.factories 配置自动装配的类
    

--------------------------------------------------------------------------------------------------


自动配置SPI机制:
SpringApplication.run()
    启动springboot
        启动spring
            加载配置,调用ImportSelector接口的实现类selectImports()方法
                扫描META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports文件,查找自动装配类,注入到spring
    OJBK


从META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports文件中
SpringBootApplication
    @EnableAutoConfiguration
        @Import(AutoConfigurationImportSelector.class)
            AutoConfigurationImportSelector->DeferredImportSelector->ImportSelector
                selectImports()
                    getAutoConfigurationEntry()
                        getCandidateConfigurations()
                            ImportCandidates.load(AutoConfiguration.class, getBeanClassLoader())
                                private static final String LOCATION = "META-INF/spring/%s.imports";
                                    org.springframework.boot.autoconfigure.AutoConfiguration.imports
                                        org.mybatis.spring.boot.autoconfigure.MybatisLanguageDriverAutoConfiguration
                                        org.mybatis.spring.boot.autoconfigure.MybatisAutoConfiguration


--------------------------------------------------------------------------------------------------


Spring Boot 2.7.0 通过spring.factories加载自动配置类的方式成为过去式(弃用从spring.factories加载自动配置类),采用全新的方式加载自动配置类:需要被自动加载的类写在META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports文件里,每一行是配置类的全类名。


--------------------------------------------------------------------------------------------------


mybatis自动装配:    
1.实现配置类MybatisProperties 通过@Configuration、@ConfigurationProperties(prefix = MybatisProperties.MYBATIS_PREFIX)注解,用于配置属性。
2.实现自动装配的类,MybatisAutoConfiguration,实现bean的注入,包括sqlSessionFactory、sqlSessionTemplate。
3.META-INF\spring.factories 配置自动装配的类。
4.AutoConfiguredMapperScannerRegistrar该类实现ImportBeanDefinitionRegistrar接口的registerBeanDefinitions方法来实现MapperScannerConfigurer的注入。
5.MapperScannerConfigurer实现了BeanDefinitionRegistryPostProcessor接口的postProcessBeanDefinitionRegistry方法,这个方法里面实现了@Mapper标签的扫描和注入。


--------------------------------------------------------------------------------------------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值