尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
Spring @Configuration 注解详解
1. Configuration 概述Configuration是 Spring Framework 中一个核心的注解用于标记一个类为配置类。配置类替代了传统的 XML 配置文件通过 Java 代码的方式来定义和装配 Spring 应用上下文中的 Bean。2. 基本用法在类上添加Configuration注解即可将其声明为一个配置类。配置类中通常包含一个或多个被Bean注解标记的方法这些方法用于创建和配置 Spring 容器管理的 Bean 实例。Configuration public class AppConfig { Bean public MyService myService() { return new MyServiceImpl(); } Bean public DataSource dataSource() { // 配置并返回 DataSource 实例 return new DriverManagerDataSource(jdbc:mysql://localhost:3306/mydb, user, password); } }3. 核心特性与原理3.1 配置类代理CGLIB默认情况下Spring 会使用 CGLIB 为Configuration类创建代理。这确保了配置类内部方法间的调用会被拦截从而保证Bean方法的单例性。例如Configuration public class ConfigA { Bean public BeanA beanA() { return new BeanA(beanB()); // 这里调用 beanB() 会返回容器中的单例而非创建新实例 } Bean public BeanB beanB() { return new BeanB(); } }3.2 Bean 注解方法在配置类中使用Bean注解的方法相当于 XML 配置中的bean元素。方法名默认作为 Bean 的名称返回值类型作为 Bean 的类型。3.3 组合配置Import可以使用Import注解导入其他配置类实现配置的模块化和组合。Configuration Import({DatabaseConfig.class, SecurityConfig.class}) public class MainConfig { // 主配置类 }4. 进阶用法4.1 条件化配置Conditional结合Conditional及其衍生注解如ConditionalOnClass,ConditionalOnProperty可以根据特定条件决定是否创建某个 Bean。4.2 配置属性绑定ConfigurationProperties与ConfigurationProperties注解结合可以轻松地将外部配置如 application.properties绑定到 Java Bean 上。4.3 简化配置ComponentScan在配置类上添加ComponentScan注解可以指定 Spring 扫描特定包路径下的组件Component,Service,Repository,Controller。5. Configuration vs Component虽然Configuration本身也被Component元注解标注但二者有重要区别Configuration语义上表示这是一个配置类其内部的Bean方法会通过代理确保 Bean 的单例性。Component表示一个通用的 Spring 组件。如果一个普通Component类中包含Bean方法这些方法间的调用不会通过代理可能导致每次调用都创建新的实例“lite mode”。6. 最佳实践与常见问题保持配置类单一职责每个配置类应专注于一个特定领域的配置如数据源、MVC、安全。避免在 Bean 方法中编写复杂业务逻辑配置方法应专注于 Bean 的创建和依赖注入。注意循环依赖配置类之间的Bean方法如果相互引用可能产生循环依赖需通过设计或使用Lazy注解解决。测试配置类使用SpringBootTest或AnnotationConfigApplicationContext对配置类进行集成测试。7. 总结Configuration是现代 Spring 应用尤其是 Spring Boot进行依赖注入和 Bean 配置的基石。它提供了类型安全、易于重构和测试的配置方式是替代 XML 配置的首选方案。理解其代理机制、与Bean的配合以及相关的组合注解是掌握 Spring 核心容器的关键。
RELATED

相关推荐

Spring Boot @SpringBootApplication 注解详解

Spring Boot @SpringBootApplication 注解详解

1. SpringBootApplication 注解概述SpringBootApplication 是 Spring Boot 应用的核心注解,通常标注在主启动类上。它是一个组合注解,集成了三个核心注解的功能,简化了 Spring Boot 应用的配置。2. 核心组成SpringBootApplication 注解实际上…

📅 2026/9/14 21:12:02
Spring Boot STS 创建项目详细教程

Spring Boot STS 创建项目详细教程

1. 什么是 STS? STS(Spring Tool Suite)是一个基于 Eclipse IDE 的集成开发环境,专门为 Spring 框架应用开发而定制。它内置了对 Spring Boot、Spring MVC、Spring Data 等项目的强大支持,提供了项目创建向导、实时配…

📅 2026/7/17 19:29:39
打包启动介绍

打包启动介绍

1. 什么是打包启动?打包启动是指将应用程序及其所有依赖项、配置文件、资源文件等打包成一个独立的、可执行的文件或目录结构的过程。这个过程使得应用程序可以在目标环境中无需安装额外的依赖即可直接运行,极大地简化了部署和分发流程。2. 打包启动的核…

📅 2026/8/8 8:08:00
MORE NEWS

更多资讯

📰

DeepSeek Harness实战:从零搭建可控的AI Agent工作流

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

SpringBoot+Vue资产管理系统开发实战指南

1. 项目概述:SpringBootVue资产管理系统开发全解析这套基于SpringBootVue的公司资产管理系统,是当前企业信息化建设中典型的全栈开发实践案例。我去年为本地一家中型制造企业实施过类似系统,帮助他们将固定资产盘点效率提升了60%。这类平台核…

📰

适配器模式实战:从接口转换到多通道消息推送的工程实践

接手过不下十个做过半截又跑路的老项目之后,我越来越觉得“设计模式”这回事被教材讲歪了。一提适配器模式,大部分同学第一反应是“把A接口转换成B接口”,然后背个类图就完事。但实际开发里,适配器模式远不止“接口转换”四个字—…

📰

【Agent工程】(18)—— 人机协同确认点

【Agent工程】(18)—— 人机协同确认点 文章目录【Agent工程】(18)—— 人机协同确认点1. 全自动链路挡不住误执行1.1 与第 6 篇 pending 的分工1.2 确认疲劳是真实故障模式2. 确认点落在哪一层2.1 确认策略字段2.2 策略引擎确认与…

📰

集成灶技术创新与智能家居融合解析

1. 项目背景与行业定位浙江美大作为国内集成灶行业的开创者,近期公布的2025战略规划中明确提出研发费率逆势提升的目标,这在当前家电行业整体增速放缓的背景下显得尤为突出。根据公开数据显示,其研发投入占比将从行业平均的3.2%提升至5.8%&am…

📰

上帝视角技术全解析:无人机航拍与三维实景建模实战

1. 概念解析:什么是“上帝视角”,为什么它让人着迷 1.1 从地图App到航拍大片,这个词到底在说什么 我第一次被“gods-eye-view”这个概念触动,是在用地图App的卫星图层看老家的屋顶时——那个瞬间,我熟悉的街道、河流、…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬