Spring Boot的自动配置是一种让你的应用快速运行起来的方式,它基于约定大于配置的原则,尽可能地去推断和应用配置。
自动配置的核心是@EnableAutoConfiguration
注解,它开启了自动配置功能。Spring Boot在启动时会扫描类路径上的所有jar包,利用Spring Factories机制查找文件META-INF/spring.factories
,这个文件里列出了所有Spring Boot知道的自动配置的类。
自动配置类会根据类路径上的类和定义在spring.factories
中的配置条件进行评估。如果发现某个条件的类存在于类路径上,那么相应的配置类就会被应用。
以下是一个简化的例子,展示了自动配置类的结构:
@Configuration
@ConditionalOnClass(DataSource.class) // 仅当DataSource类存在于类路径上时
@EnableConfigurationProperties(DataSourceProperties.class) // 启用DataSourceProperties属性配置
public class DataSourceAutoConfiguration {
@Bean
@ConditionalOnMissingBean // 仅当没有其他DataSource定义时
public DataSource dataSource(DataSourceProperties properties) {
// 创建并返回一个DataSource实例
}
}
在这个例子中,DataSourceAutoConfiguration
只会在类路径上有DataSource
类且没有其他DataSource
定义时才会创建一个DataSource
的bean。这些条件注解@ConditionalOnClass
和@ConditionalOnMissingBean
是Spring Boot自动配置的关键。
Spring Boot的自动配置原理就是通过这种方式,使得开发者能够快速搭建起一个生产级别的应用,而不需要写大量冗余的配置代码。