@Bean与@Configuration详解

聖光之護
发布: 2025-11-22 08:12:06
原创
651人浏览过

@bean用于定义一个bean实例,@configuration用于标识配置类,二者配合使用可实现spring容器中组件的有效管理。

1、 Spring的Java配置方式核心在于使用@Configuration注解的类和@Bean注解的方法,通过这种基于Java的配置模式,能够更灵活、清晰地声明和管理Spring中的Bean,显著增强配置的可读性与类型安全。

@Bean与@Configuration详解

2、 使用@Bean注解的方法,表示该方法将负责创建并返回一个由Spring IoC容器管理的对象实例。对于熟悉XML配置的开发者来说,@Bean的作用类似于XML中的标签。该方法的返回值会被注册为Spring容器中的一个Bean。虽然@Bean方法可以在任意被@Component标注的类中使用,但最常见且推荐的做法是将其放在由@Configuration注解修饰的类中。这类配置类专门用于集中管理Bean的定义及其生命周期,从而实现更加结构化的配置方式,提升代码的可维护性与可测试性。

@Bean与@Configuration详解

3、 @Configuration注解表明该类是一个配置类,主要用于提供Bean的定义。此外,它还支持在同一个类内部调用其他被@Bean标注的方法来构建Bean之间的依赖关系。这种方式使得配置逻辑内聚,便于管理和复用,增强了配置类的整体结构性与可维护性。

@Bean与@Configuration详解

4、 以下是最基本的配置类编写示例。

@Bean与@Configuration详解

5、 上述AppConfig类所实现的功能,等同于如下Spring XML配置。

在路上App项目源码
在路上App项目源码

在路上是一款旅游型的APP,是集旅游旅游目的地攻略指南,可以自动定位到城市,景点,餐馆,酒店,还可以分享旅游经验,与参与者互动。架构合理,有详细的注解。很好的学习材料。

在路上App项目源码 896
查看详情 在路上App项目源码

@Bean与@Configuration详解

6、 若在未使用@Configuration注解的类中定义@Bean方法,则这些方法将以“精简模式”处理。此类情况通常出现在普通的@Component类或普通Java类中,这类类本身并非专为配置设计,其主要职责可能是实现业务功能。此时的@Bean方法仅作为向Spring容器注册Bean的一种附加手段。例如,某个服务类可通过添加@Bean方法,将其自身暴露给Spring容器进行管理,从而在不破坏原有结构的前提下扩展容器集成能力,体现了一种轻量级、灵活的配置策略。

@Bean与@Configuration详解

7、 在精简模式下,@Bean方法无法正确表达Bean间的依赖调用关系。这类方法通常只作用于所在类的内部状态,也可通过参数注入外部依赖。因此,不应在一个@Bean方法中直接调用另一个@Bean方法。每个@Bean方法本质上是一个独立的工厂方法,仅负责创建并返回一个Bean实例,不具备特殊的代理行为。由于无需Spring对其进行代理增强,故不需要CGLIB生成子类,从而允许配置类为final类或不可继承类型,提高了类设计的自由度。

@Bean与@Configuration详解

8、 在标准实践中,@Bean方法应定义在@Configuration类中,以确保运行在“完整模式”下。在此模式中,对@Bean方法的调用会被Spring容器拦截并重定向,确保始终从容器中获取实例,避免重复创建对象。这种方式有效解决了因直接调用@Bean方法而导致的单例失效问题,防止了精简模式下可能出现的隐蔽错误,保障了Bean生命周期的一致性和配置的可靠性。

@Bean与@Configuration详解

以上就是@Bean与@Configuration详解的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号