对于初入编程的准程序猿,相信大家对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的自动装配原理。