@Configuration
注解是 Spring 框架中的一个重要注解,主要用于指示某个类是一个 Spring 配置类。使用这个注解的类可以定义 Beans,并通过方法返回这些 Beans 的实例。
主要作用
-
标识配置类:
@Configuration
表明该类是用来定义 Spring Beans 的配置类。这告诉 Spring 容器这个类中包含有 Bean 的定义。 -
方法作为 Bean 的定义: 在标有
@Configuration
的类中,可以使用@Bean
注解标记的方法来定义 Spring Beans。每个这样的返回方法都会返回一个适合被 Spring 容器管理的 Bean。 -
提供 Java-based 配置方式: 使用
@Configuration
,开发者可以通过 Java 代码来管理 Spring Beans,不需要使用 XML 文件。这样使得配置更加类型安全和容易维护。
使用示例
以下是一个使用 @Configuration
注解的简单示例:
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class AppConfig {
// 定义一个 Bean,返回 MyService 实例
@Bean
public MyService myService() {
return new MyService();
}
// 定义另一个 Bean,返回 MyRepository 实例
@Bean
public MyRepository myRepository() {
return new MyRepository();
}
}
功能细节
-
单例模式: 默认情况下,使用
@Configuration
注解定义的 Bean 是单例(singleton),这意味着每次获取这个 Bean 时都会得到同一个实例。 -
CGLIB 代理: 如果类被加了
@Configuration
,Spring 会使用 CGLIB 库为这个类生成代理,以确保方法调用的单例性,即使在调用@Bean
方法时也返回的是同一个实例,而不是每次都创建新的实例。这种行为用于确保 Bean 的作用是可预测的。 -
组合和重用: 通过
@Configuration
注解的类,您可以将多个 Bean 整合到一起,使得应用程序的配置更加结构化和模块化。
总结
@Configuration
注解用于定义 Spring 的配置类,能够将 Java 类作为 Spring 上下文的配置的一部分。- 在使用
@Configuration
的类中,标记为@Bean
的方法将创建和配置 Spring Bean,从而提供了一个替代 XML 配置的清晰和类型安全的方法。