简介:
@Configuration
类是定义 bean 配置的地方,而 @Bean
方法是具体创建 bean 实例的方法。
@Configuration
-
作用:
@Configuration
注解用于定义配置类,表明该类包含一个或多个 bean 定义的方法。Spring 容器在启动时会自动扫描这些配置类以注册 bean。
-
生命周期:
- 配置类的生命周期与 Spring 应用上下文的生命周期相匹配。它在 Spring 容器启动时被创建和初始化。
-
特点:
- 配置类可以包含嵌套的
@Bean
定义方法。 @Configuration
注解的类可以使用 Spring 的@ComponentScan
注解来自动扫描和注册 bean。
- 配置类可以包含嵌套的
如果不懂 @ComponentScan
注解作用,可以看下我这篇文章
springboot注解@ComponentScan 详解-CSDN博客
@Bean
-
作用:
@Bean
注解用于在配置类中声明一个 bean。当配置类使用@Configuration
标注时,@Bean
注解的方法将返回一个对象,该对象由 Spring 容器管理。
-
生命周期:
@Bean
注解的方法在首次被调用时执行,除非指定了作用域为 prototype。对于单例(singleton)作用域(默认),结果对象添加到 Spring 上下文中,并在后续的请求中重用。
-
特点:
@Bean
方法可以有参数,这些参数由 Spring 自动提供,通常是对其他 bean 的引用。- 它支持不同的作用域,如单例(singleton)、原型(prototype)、请求(request)、会话(session)等。
关系
-
相互依赖:
@Configuration
类提供了一个或多个@Bean
方法,这些方法实际上定义了应用中的 bean。@Configuration
类是用于声明这些 bean 的容器,而@Bean
方法是用来创建具体的 bean 实例。 -
增强的功能:当一个类使用
@Configuration
注解时,Spring
会对这个类进行特殊处理,为其创建一个增强的代理。这个代理确保 @Bean
方法的调用被正确地处理,以便每个 bean 只被实例化一次(对于单例作用域),即使它在配置类中被多次引用。
示例
以下是一个使用 @Configuration
和 @Bean
的简单示例:
@Configuration
public class AppConfig {@Beanpublic MyService myService() {return new MyServiceImpl();}
}public interface MyService {// service methods
}public class MyServiceImpl implements MyService {// implementation of service methods
}
在这个例子中,AppConfig
是一个配置类,用 @Configuration
标注。它声明了一个 @Bean
方法 myService
,该方法返回 MyServiceImpl
的实例。Spring 容器会自动识别 AppConfig
类,调用 myService
方法,并将返回的对象添加到 Spring 应用上下文中。
------------------------------------------与正文内容无关------------------------------------
如果觉的文章写对各位读者老爷们有帮助的话,麻烦点赞加关注呗!小弟在这拜谢了!
如果您觉得我的文章在某些地方写的不尽人意或者写的不对,从而让你对你人生观产生颠覆(概不负责),需要斧正,麻烦在评论区不吝赐教,作者看到后会根据您的提示查阅文章进行修改,还这世间一个公理一片蓝天