Springboot注解@Configuration和@Bean注解作用,生命周期

简介:

@Configuration 类是定义 bean 配置的地方,而 @Bean 方法是具体创建 bean 实例的方法。

@Configuration

  1. 作用

    • @Configuration 注解用于定义配置类,表明该类包含一个或多个 bean 定义的方法。Spring 容器在启动时会自动扫描这些配置类以注册 bean。
  2. 生命周期

    • 配置类的生命周期与 Spring 应用上下文的生命周期相匹配。它在 Spring 容器启动时被创建和初始化。
  3. 特点

    • 配置类可以包含嵌套的 @Bean 定义方法。
    • @Configuration 注解的类可以使用 Spring 的 @ComponentScan 注解来自动扫描和注册 bean。

如果不懂 @ComponentScan注解作用,可以看下我这篇文章

springboot注解@ComponentScan 详解-CSDN博客

@Bean

  1. 作用

    • @Bean 注解用于在配置类中声明一个 bean。当配置类使用 @Configuration 标注时,@Bean 注解的方法将返回一个对象,该对象由 Spring 容器管理。
  2. 生命周期

    • @Bean 注解的方法在首次被调用时执行,除非指定了作用域为 prototype。对于单例(singleton)作用域(默认),结果对象添加到 Spring 上下文中,并在后续的请求中重用。
  3. 特点

    • @Bean 方法可以有参数,这些参数由 Spring 自动提供,通常是对其他 bean 的引用。
    • 它支持不同的作用域,如单例(singleton)、原型(prototype)、请求(request)、会话(session)等。

关系

  • 相互依赖@Configuration 类提供了一个或多个 @Bean 方法,这些方法实际上定义了应用中的 bean。@Configuration 类是用于声明这些 bean 的容器,而 @Bean 方法是用来创建具体的 bean 实例。

  • 增强的功能:当一个类使用 @Configuration 注解时,Spring

会对这个类进行特殊处理,为其创建一个增强的代理。这个代理确保 @Bean 方法的调用被正确地处理,以便每个 bean 只被实例化一次(对于单例作用域),即使它在配置类中被多次引用。

示例

以下是一个使用 @Configuration@Bean 的简单示例:

@Configuration
public class AppConfig {

    @Bean
    public 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 应用上下文中。

------------------------------------------与正文内容无关------------------------------------
如果觉的文章写对各位读者老爷们有帮助的话,麻烦点赞加关注呗!小弟在这拜谢了!
如果您觉得我的文章在某些地方写的不尽人意或者写的不对,从而让你对你人生观产生颠覆(概不负责),需要斧正,麻烦在评论区不吝赐教,作者看到后会根据您的提示查阅文章进行修改,还这世间一个公理一片蓝天

你可能感兴趣的:(java框架,spring,boot,java,spring)