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

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

相关推荐

  1. 9、Spring之Bean生命周期~依赖注入(总)

    2024-01-20 15:04:01       32 阅读
  2. 11、Spring之Bean生命周期~依赖注入(2)

    2024-01-20 15:04:01       22 阅读
  3. SpringBoot中@PostConstruct注解作用

    2024-01-20 15:04:01       55 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-20 15:04:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-20 15:04:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-01-20 15:04:01       82 阅读
  4. Python语言-面向对象

    2024-01-20 15:04:01       91 阅读

热门阅读

  1. 美易官方:Coinbase美股盘前涨超0.7%

    2024-01-20 15:04:01       52 阅读
  2. Spring Boot应用程序如何配置 HTTPS 访问方式

    2024-01-20 15:04:01       50 阅读
  3. 聊一聊工作中事故的复盘几点想法

    2024-01-20 15:04:01       50 阅读
  4. c#键盘事件的使用

    2024-01-20 15:04:01       54 阅读
  5. iptables TEE模块测试小记

    2024-01-20 15:04:01       59 阅读
  6. GoLang刷题之leetcode

    2024-01-20 15:04:01       55 阅读
  7. Vue学习1

    2024-01-20 15:04:01       51 阅读
  8. 【加速排坑】docker设置国内image镜像源

    2024-01-20 15:04:01       62 阅读