SpringBoot 使用 @Configuration 集中管理 Bean的实战步骤

 更新时间:2026年04月18日 09:12:08   作者:河阿里  
在 SpringBoot 中,@Configuration 注解是专门用来集中管理 Bean 的核心方案,它可以替代传统 XML 配置文件,本文给大家介绍SpringBoot使用@Configuration集中管理 Bean的实战步骤,感兴趣的朋友跟随小编一起看看吧

在 SpringBoot 中,@Configuration 注解是专门用来集中管理 Bean 的核心方案,它可以替代传统 XML 配置文件,将所有第三方 Bean、自定义 Bean 统一在配置类中创建、管理,实现 Bean 的集中化、模块化管理。

一、核心概念

  1. @Configuration:标记一个类为配置类,SpringBoot 启动时会自动扫描并加载这个类,替代 XML 配置文件。
  2. @Bean:写在配置类的方法上,方法的返回值就是一个 Bean 对象,方法名默认是 Bean 的名称。
  3. 优势:集中管理所有 Bean、支持依赖注入、支持配置属性注入、代码可读性强、便于维护。

二、实战步骤

1. 基础环境

SpringBoot 项目(无需额外依赖,核心容器已包含 @Configuration

2. 创建统一配置类

创建 config 包,编写配置类,集中注册所有需要的 Bean(自定义对象、第三方工具类等)。

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
/**
 * 全局Bean配置类:集中管理所有Bean对象
 */
@Configuration // 核心注解:标记为配置类
public class GlobalBeanConfig {
    // ==================== 1. 管理自定义 Bean ====================
    /**
     * 创建自定义 UserService Bean(也可以用 @Service 注解,这里演示配置类方式)
     * @return Bean 对象
     */
    @Bean // 方法名 userService 就是 Bean 的名称
    public UserService userService() {
        return new UserService();
    }
    // ==================== 2. 管理第三方工具类 Bean ====================
    /**
     * 注册线程池 Bean(第三方类,无法加 @Component,必须用配置类管理)
     */
    @Bean
    public ExecutorService threadPool() {
        return Executors.newFixedThreadPool(5);
    }
    // ==================== 3. 带依赖注入的 Bean ====================
    /**
     * 创建 OrderService Bean,依赖上面的 userService Bean
     */
    @Bean
    public OrderService orderService(UserService userService) { // 自动注入已注册的 Bean
        OrderService orderService = new OrderService();
        // 手动注入依赖
        orderService.setUserService(userService);
        return orderService;
    }
}

3. 配套的业务类(无注解,纯Java类)

// 自定义业务类(无需加 @Service/@Component,由配置类统一注册)
public class UserService {
    public String getUserInfo() {
        return "用户信息:集中管理的Bean";
    }
}
public class OrderService {
    private UserService userService;
    public void setUserService(UserService userService) {
        this.userService = userService;
    }
    public String getOrderInfo() {
        return "订单信息,依赖:" + userService.getUserInfo();
    }
}

4. 测试使用集中管理的 Bean

直接通过 @Autowired 注入配置类中注册的 Bean 即可使用:

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
@RestController
public class TestController {
    // 注入配置类中创建的 Bean
    @Resource
    private UserService userService;
    @Resource
    private OrderService orderService;
    @Resource
    private ExecutorService threadPool;
    @GetMapping("/test")
    public String test() {
        // 测试自定义Bean
        System.out.println(userService.getUserInfo());
        // 测试依赖注入的Bean
        System.out.println(orderService.getOrderInfo());
        // 测试第三方Bean
        threadPool.execute(() -> System.out.println("线程池Bean执行成功"));
        return "Bean 集中管理测试成功";
    }
}

三、高级用法

1. 给 Bean 指定名称(默认是方法名)

@Bean(name = "customUserService") // 指定Bean名称
public UserService userService() {
    return new UserService();
}

注入时指定名称:

@Resource(name = "customUserService")
private UserService userService;

2. 配置多环境/模块化管理Bean

可以拆分多个配置类,按模块管理:

  • DataSourceConfig:管理数据库连接池 Bean
  • ThreadPoolConfig:管理线程池 Bean
  • RedisConfig:管理 Redis 模板 Bean

SpringBoot 会自动扫描所有 @Configuration 类。

3. 读取配置文件注入 Bean

结合 @Value 读取 application.yml 配置,动态创建 Bean:

  1. application.yml
thread:
  core: 5
  1. 配置类中注入
import org.springframework.beans.factory.annotation.Value;
@Configuration
public class ThreadPoolConfig {
    @Value("${thread.core}")
    private Integer corePoolSize;
    @Bean
    public ExecutorService threadPool() {
        return Executors.newFixedThreadPool(corePoolSize);
    }
}

4. Bean 销毁方法(资源释放)

适合线程池、连接池等需要关闭的 Bean:

@Bean(destroyMethod = "shutdown") // 指定销毁方法
public ExecutorService threadPool() {
    return Executors.newFixedThreadPool(5);
}

四、总结

  1. @Configuration = 配置文件:专门用于集中、统一管理 Bean,是 SpringBoot 推荐的无 XML 方案。
  2. @Bean = 注册 Bean:方法返回值就是 Spring 容器管理的对象。
  3. 适用场景:
    • 无法直接加 @Component 的第三方类(线程池、数据源、工具类)
    • 需要自定义创建逻辑的 Bean
    • 需要集中管理所有 Bean,统一维护
  4. 依赖注入:配置类中方法参数可以直接注入其他 Bean,Spring 自动匹配。

到此这篇关于SpringBoot 使用 @Configuration 集中管理 Bean的实战步骤的文章就介绍到这了,更多相关SpringBoot @Configuration 管理 Bean内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • springboot全局异常处理方式

    springboot全局异常处理方式

    文章介绍了Spring Boot中处理异常的两种方式,还详细解释了@ControllerAdvice和@ExceptionHandler注解的用法,并通过一个示例展示了全局异常处理的效果,感兴趣的朋友跟随小编一起看看吧
    2025-11-11
  • 解读controller层,service层,mapper层,entity层的作用与联系

    解读controller层,service层,mapper层,entity层的作用与联系

    这篇文章主要介绍了关于controller层,service层,mapper层,entity层的作用与联系,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • java 指定某个jdk版本方法

    java 指定某个jdk版本方法

    这篇文章主要介绍了java 指定某个jdk版本方法的相关资料,需要的朋友可以参考下
    2017-05-05
  • java生成字母数字组合的随机数示例 java生成随机数

    java生成字母数字组合的随机数示例 java生成随机数

    这篇文章主要介绍了java生成字母数字组合的随机数的示例,大家参考使用吧
    2014-01-01
  • Java8之lambda表达式基本语法

    Java8之lambda表达式基本语法

    本文通过示例大家给大家介绍了java8之lambda表达式的基本语法,感兴趣的的朋友一起看看吧
    2017-08-08
  • java基于odbc连接oracle的实现方法

    java基于odbc连接oracle的实现方法

    这篇文章主要介绍了java基于odbc连接oracle的实现方法,结合实例形式分析了连接操作的具体步骤与相关实现技巧,需要的朋友可以参考下
    2016-09-09
  • 详细讲述Java中的对象转型

    详细讲述Java中的对象转型

    在本篇文章里我们给大家详细分享了关于Java中的对象转型的知识点内容,有兴趣的朋友们学习下。
    2018-10-10
  • Java实现本地缓存的常用方案介绍

    Java实现本地缓存的常用方案介绍

    本地缓存的代表技术主要有HashMap,Guava Cache,Caffeine和Encahche,这篇文章主要来和大家聊聊java利用这些技术分别实现本地缓存的方法,有需要的可以了解下
    2025-05-05
  • java实现图片裁切的工具类实例

    java实现图片裁切的工具类实例

    这篇文章主要介绍了java实现图片裁切的工具类实例,涉及Java针对图片的读取、修改等相关操作技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-11-11
  • Spring 日志规范及作用

    Spring 日志规范及作用

    日志是在系统运行过程中关键的节点的数,这个些日志的记录方便当系统出现问题方便问题查找,这篇文章主要介绍了Spring 日志规范及作用,需要的朋友可以参考下
    2024-03-03

最新评论