文章目录
- 1.自动配置类
- 2. @Import
- 3. @AutoConfigurationImportSelector
- 4. @AutoConfiguration
1.自动配置类
Spring Boot的自动装配机制会试图根据你所添加的依赖来自动配置你的Spring应用程序。
例如,如果你添加了Mysql依赖,而且你没有手动配置任何DataSource Bean,那么SpringBoot就会自动配置内存数据库。
你需要将 @EnableAutoConfiguration 或 @SpringBootApplication 注解添加到你的@Configuration 类中,从而开启自动配置功能。
例如之前ssm中使用Mybatis框架
<bean id="dataSource" class="xxxx.DruidDataSource">
<property name="url" value="jdbc:mysql://localhost:3306/db"/>
<property name="username" value="root">
</bean>
<bean id="sqlSessionFactory" class="xxx.SqlSessionFactory">
<property name="dataSource" ref="dataSource"/>
</bean>
现在我们只需开启自动配置即可。
从类路径中,搜索相关的jar,根据jar的内容,尝试创建所需的对象,如果有mybatis.jar,尝试创建DataSource(根据配置文件中的url, username, password)连接数据库,还需要创建SqlSessionFactory, Dao接口的代理对象。这些开放人员不需要写一行代码,就能使用MyBatis框架了。
2. @Import
可以用来导入额外的配置类。
3. @AutoConfigurationImportSelector
AutoConfigurationImportSelector 间接实现了 ImportSelector 接口,导入自动配置类
自动配置从 jar 的指定文件读取要加载的配置类列表
自动配置类列表:(xxx.imports)
Spring Boot 之前的版本(2.7)读取 spring.factories 文件。 保留 spring.factories 为了向后兼
执行流程:
(Mybatis的自动配置类 XXXAutoConfiguration.class)
(MybatisProperties.class)
4. @AutoConfiguration
- 新的注解@AutoConfiguration,用在自动配置类的上面。相当于增强的@Configuration,专注自动配置类。
- @AutoConfiguration 还支持通过 after、afterNames、before 和 benameames 属性进行自动配置排序,决定多个自动配置类执行先后顺序.