Spring Boot的自动配置是通过@EnableAutoConfiguration注解触发的,它会扫描应用的类路径,根据依赖的jar包来自动配置Spring应用程序。这是通过spring-boot-autoconfigure模块实现的。
自动配置的条件是:
- 类路径上存在相应的Spring Boot Starter依赖。
- 相关的配置类中的条件注解(
@ConditionalOnClass,@ConditionalOnMissingBean等)满足条件。
以下是一个简单的例子,展示了如何创建自定义的自动配置:
@Configuration
@ConditionalOnClass(MyService.class)
@EnableConfigurationProperties(MyProperties.class)
public class MyAutoConfiguration {
private final MyProperties properties;
public MyAutoConfiguration(MyProperties properties) {
this.properties = properties;
}
@Bean
@ConditionalOnMissingBean
public MyService myService() {
return new MyService(properties);
}
}在这个例子中,MyAutoConfiguration 仅在类路径上存在 MyService.class 类时才会配置 MyService 实例作为Spring容器中的Bean。同时,它利用 MyProperties 类来绑定外部配置文件中的属性。
要使自动配置生效,你需要在主配置类上添加 @EnableAutoConfiguration 注解:
@SpringBootApplication
public class MyApplication {
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
}@SpringBootApplication 注解是一个组合注解,包含了 @EnableAutoConfiguration,所以不需要额外添加。