【Spring Boot 注解】@Configuration与@AutoConfiguration
文章目录
- @Configuration与@AutoConfiguration
- 一、@Configuration
- 二、@AutoConfiguration
@Configuration与@AutoConfiguration
一、@Configuration
这是最常用的 Spring 注解之一,表示当前类是一个 配置类,可以定义 @Bean 方法,等效于传统的 XML 配置文件。
特点:
- 明确地告诉 Spring 这个类是配置类。
- 常用于显式配置,由开发者自己创建、引用。
- @Bean 方法定义的组件会注册到 Spring 容器中。
示例:
@Configuration
public class MyConfig {@Beanpublic MyService myService() {return new MyServiceImpl();}
}
只要MyConfig
在@SpringBootApplication
扫描范围内,那么该Bean就会被加载。
二、@AutoConfiguration
这是 Spring Boot 提供的注解,用于自动配置类。
特点:
- 由 Spring Boot 自动加载,配合 META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports 使用。
- 用于按需加载配置,支持条件注解(如 @ConditionalOnClass, @ConditionalOnProperty 等)。
- 主要用于自动配置组件,如 Spring Boot 中的 starter 自动装配机制。
示例:
package org.kaishu.framework.swagger;@AutoConfiguration
// 判断是否引入了 OpenAPI 类,否则自动配置不启用
@ConditionalOnClass({OpenAPI.class})
//只有当 springdoc.api-docs.enabled=true 或未配置(默认值)时,这段配置才会启用
@ConditionalOnProperty(prefix = "springdoc.api-docs", name = "enabled", havingValue = "true", matchIfMissing = true)
@EnableConfigurationProperties(SwaggerProperties.class)
public class KaishuSwaggerAutoConfiguration {
...
}
注:
需要在 resource/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports 文件中声明此类,Spring Boot 才会自动扫描并导入,不需要添加包路径到@SpringBootApplication
扫描范围中。
文件示例:
org.kaishu.framework.swagger.KaishuSwaggerAutoConfiguration