无标题

简介: `@Configuration` 注解用于标识配置类,相当于 XML 配置文件。配合 `@Bean` 可注册 Bean 实例,通过注解方式启动 IOC 容器,实现组件的自动加载与管理。

@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
自动装配机制
本文深入解析SpringBoot自动装配机制,从@SpringBootApplication注解入手,剖析其组合注解原理。重点讲解@ComponentScan、@SpringBootConfiguration及@EnableAutoConfiguration三大核心注解的源码实现,揭示@AutoConfigurationPackage与AutoConfigurationImportSelector如何通过SpringFactoriesLoader加载配置,实现自动化注册与组件扫描,最终完成自动装配全过程。
 自动装配机制
|
2月前
|
自然语言处理 关系型数据库 MySQL
MySQL 全文索引
MySQL全文索引支持对CHAR、VARCHAR、TEXT字段进行高效文本搜索,适用于文章、评论等长文本。通过MATCH()与AGAINST()实现自然语言或布尔模式查询,支持分词、停用词过滤和最小词长设置。可创建于建表时或后期添加,适用于搜索引擎、CMS、电商等场景,提升关键词检索效率,但需权衡增删改开销与索引维护成本。(238字)
|
2月前
|
消息中间件 人工智能 决策智能
AgentScope x RocketMQ:构建多智能体应用组合
AgentScope是阿里巴巴推出的开发者友好型多智能体框架,支持模块化、可定制的智能体应用开发。通过集成RocketMQ,实现高效、可靠的Agent间通信,助力构建如“智能旅行助手”等复杂协作场景,推动多智能体生态发展。(238字)
|
2月前
|
安全 Java 数据安全/隐私保护
通用权限管理模型
本文介绍了ACL和RBAC两种常见权限模型。ACL通过直接授权用户或角色访问对象,实现简单;RBAC则基于角色分配权限,支持角色继承与职责分离,结构更清晰、易于维护,是现代系统主流的权限管理方式。
|
2月前
|
存储 调度
系统调用的过程是如何发生 CPU 上下文的切换的呢?
CPU上下文包括寄存器和程序计数器,是任务运行的基础。上下文切换即保存旧任务状态、加载新任务并跳转执行。系统调用虽涉及两次上下文切换,但不更换进程,与进程切换不同。
|
2月前
|
Java 测试技术 Linux
生产环境发布管理
本文介绍大型团队如何通过自动化部署平台实现多环境(dev/test/pre/prod)高效发布与运维。涵盖各环境职责、基于Jenkins+K8S的CI/CD流程、分支管理、一键发布及Skywalking日志链路追踪,提升发布效率与故障排查能力。
|
2月前
|
敏捷开发 Java 测试技术
为什么要单元测试
本文探讨单元测试在现代软件开发中的核心价值,打破“写单测拖慢进度”的误区,阐述其如何通过提升代码质量、降低维护成本、加速迭代来真正加快研发速度,并结合测试金字塔与反模式分析,倡导开发者重视单元测试,推动软件工程高效演进。
 为什么要单元测试
|
2月前
|
机器学习/深度学习 自动驾驶 算法
基于深度学习的交通标志识别系统
本研究聚焦基于深度学习的交通标志识别系统,针对传统方法在复杂环境下识别率低的问题,结合YOLOv8模型与Python技术,实现高效、精准的实时检测,提升智能交通系统的安全性和自动化水平。
|
2月前
|
监控 算法 Unix
Thread.sleep(0) 到底有什么用(读完就懂)
Thread.Sleep用于暂停线程执行,Sleep(1000)不保证精确唤醒时间,受系统调度影响;Sleep(0)则触发立即重新竞争CPU,常用于避免界面假死。理解其原理有助于正确使用多线程。
40 1
|
2月前
|
存储 消息中间件 开发框架
应用架构图
技术架构是将业务需求转化为技术实现的关键过程,涵盖分层设计、技术选型与系统集成。本文详解单体与分布式架构,包括展现层、业务层、数据层及基础层的职责,以及应用间调用关系、外部系统交互与边界划分,为构建清晰的技术体系提供指导。
 应用架构图