@Configuration

简介: `@Configuration` 注解用于标记配置类,相当于 XML 配置文件。被标注的类会被 Spring IOC 容器识别,并管理其中通过 `@Bean` 注册的组件,支持基于注解的容器配置。

@Configuration 标注的类,会被 Spring 的IOC容器认定为配置类。

一个被 @Configuration 标注的类,相当于一个 applicationContext.xml 的配置文件。


例如:声明一个类,并标注 @Configuration 注解:

@Configuration
public class ConfigurationDemo {
    @Bean
    public Date currentDate() {
        return new Date();
    }
}


上述注册Bean的方式类比于xml:


<bean id="currentDate" class="java.util.Date"/>


之后使用注解启动方式,初始化一个IOC容器,并打印IOC容器中的所有bean的name:


public class MainApp {
    public static void main(String[] args) throws Exception {
        AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(ConfigurationDemo.class);
        String[] beanDefinitionNames = ctx.getBeanDefinitionNames();
        Stream.of(beanDefinitionNames).forEach(System.out::println);
    }
}


输出结果:

org.springframework.context.annotation.internalConfigurationAnnotationProcessor
org.springframework.context.annotation.internalAutowiredAnnotationProcessor
org.springframework.context.annotation.internalCommonAnnotationProcessor
org.springframework.context.event.internalEventListenerProcessor
org.springframework.context.event.internalEventListenerFactory
configurationDemo
currentDate


可以发现组件,以及配置类本身被成功加载。

相关文章
|
2天前
|
前端开发 Java 数据库连接
RuoYi
若依(RuoYi)是一款基于SpringBoot、SpringCloud的开源快速开发平台,支持单体与微服务架构。提供权限管理、代码生成器、多版本前端(Vue/Uniapp),集成Redis、Nacos等主流组件,具备响应式布局与多设备适配能力,全系列免费商用。
RuoYi
|
2天前
|
Java 数据库连接 mybatis
Mybatis及MybatisPlus
本文系统介绍MyBatis核心架构与常用功能,涵盖配置流程、结果集映射、参数传递、XML配置项、缓存机制及分页插件应用,并简要介绍MyBatis Plus的常用API,助力高效开发。
Mybatis及MybatisPlus
|
1天前
|
存储 中间件 消息中间件
应用架构图
技术架构是将业务需求转化为技术实现的关键环节,涵盖分层设计、技术选型与系统集成。本文介绍单体与分布式架构的设计原则,包括展现层、业务层、数据层及基础层的职责划分,并阐述应用间调用关系、外部系统集成与边界定义,助力构建清晰、可扩展的技术体系。(238字)
 应用架构图
|
1天前
|
开发工具 git 运维
生产环境缺陷管理
git-poison基于go-git实现,通过“投毒-解毒”机制自动化追踪和管理多分支环境下的bug修复,避免人为疏漏导致的生产事故,降低协同成本,提升发布安全与效率。
生产环境缺陷管理
|
1天前
|
Kubernetes 容器 运维
物理部署图
物理部署图描述系统运行时的硬件配置与软件部署结构,展现节点、构件、物件及连接关系,帮助理解分布式系统的网络架构与运维逻辑,是实现应用与硬件协同运行的重要设计工具。
 物理部署图
|
2天前
|
Java 数据安全/隐私保护 安全
2.通用权限管理模型
本文介绍了ACL和RBAC两种常见的权限模型。ACL通过直接为用户或角色授权实现访问控制,简单直观;RBAC则基于角色进行权限管理,支持角色继承与职责分离,结构更清晰、易于维护,是现代系统主流的权限设计方式。
2.通用权限管理模型
|
1天前
|
Java 调度 容器
线程池
本文深入剖析了Java线程池的核心原理,涵盖ThreadPoolExecutor与ScheduledThreadPoolExecutor的实现机制,重点解析了任务调度、线程复用、阻塞队列及周期性执行等关键技术,并结合源码阐述了Executors工具类和ThreadLocal的应用。
 线程池
|
1天前
|
Java 数据安全/隐私保护 Spring
3.实现权限管理的技术
本文介绍了权限管理的常见技术选型,对比了Apache Shiro、Spring Security及自定义ACL的优缺点,帮助开发者根据项目需求选择合适方案。
 3.实现权限管理的技术
|
2天前
|
uml C语言
系统时序图
时序图(Sequence Diagram)是UML中描述对象间消息传递时间顺序的交互图。横轴为对象,纵轴为时间,通过生命线、控制焦点和消息等元素,展现系统动态协作过程,强调交互的时间顺序与并发行为,常用于分析和设计系统逻辑。
 系统时序图
|
1天前
|
领域建模 数据采集 数据库
领域模型图(数据架构/ER图)
本文介绍如何通过四色原型法进行领域建模,构建数据架构中的ER图。基于业务流程提取时标性原型(MI)、参与方-地点-物品原型(PPT)、角色原型(Role)和描述原型(DESC),逐步建立风控系统的领域模型,并最终转化为实体关系图(ER图),实现从业务到数据模型的精准映射。(238字)
 领域模型图(数据架构/ER图)