Spring Boot 的启动原理、Spring Boot 自动配置原理
Spring Boot 的启动原理主要涉及以下几个关键点:
- 自动配置:Spring Boot 基于约定大于配置的原则,它会尝试根据类路径下的jar包,对应的配置自动配置Spring应用上下文。
- 起步依赖:起步依赖是一套依赖集合,它们都是Spring Boot的一部分,提供了一系列常见的非功能性特性,比如内嵌服务器、安全特性等。
- 命令行界面(CLI):Spring Boot CLI是用于启动Spring Boot应用的命令行工具。
- Actuator:Spring Boot Actuator提供了监控和管理生产环境下应用的功能。
- 自定义starters:开发者可以创建自己的起步依赖,即自定义starters。
Spring Boot 的自动配置原理主要涉及以下几个关键点:
@EnableAutoConfiguration
:通过该注解开启自动配置。spring.factories
:在jar包的META-INF
目录下,Spring Boot的自动配置类通过spring.factories
文件指定。AutoConfigurationImportSelector
:@EnableAutoConfiguration
注解引入的核心类,它会加载spring.factories
中列出的所有自动配置类。- 条件注解(
@Conditional
):Spring Boot的自动配置类使用了很多@Conditional
注解,根据不同的条件决定是否要实例化Bean。
以下是一个简单的Spring Boot自动配置类的例子:
@Configuration
@ConditionalOnClass(DataSource.class) // 当classpath下存在DataSource类时
@EnableConfigurationProperties(DataSourceProperties.class) // 启用DataSourceProperties配置属性绑定
public class DataSourceAutoConfiguration {
@Bean
@ConditionalOnMissingBean // 当容器中没有DataSource时
public DataSource dataSource() {
return new EmbeddedDatabaseBuilder()
.setType(EmbeddedDatabaseType.H2)
.build();
}
}
在这个例子中,@ConditionalOnClass
和@ConditionalOnMissingBean
是条件注解,它们决定了dataSource
方法是否会创建一个内存中的数据库实例。
评论已关闭