无标题

简介: `@Configuration` 注解用于标记配置类,相当于 XML 配置文件,可定义 Bean 并由 Spring IOC 容器管理。配合 `@Bean` 注解注册组件,通过 `AnnotationConfigApplicationContext` 启动容器,加载并实例化所有 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


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

相关文章
|
缓存 Java PHP
解决Hbuilder打包的APP微信支付时无法唤起支付,且提示{“code“:-100,“message“:“[payment微信:-1]General errors“}的问题
解决Hbuilder打包的APP微信支付时无法唤起支付,且提示{“code“:-100,“message“:“[payment微信:-1]General errors“}的问题
|
2月前
|
人工智能 JavaScript 数据可视化
OpenClaw 一键安装包使用指南与环境配置
OpenClaw一键安装包(v2.6.1)专为Windows 10/11设计,全程可视化部署,无需命令行与手动配置,内置Python/Node.js等全部依赖,5分钟快速完成安装。含28万免费Tokens,支持AI自动操控电脑、文件管理、多模型对话等功能。(239字)
|
6月前
|
Java 测试技术 数据库
Spring Boot中的项目属性配置
本文介绍Spring Boot中配置管理的常用方法:通过`@Value`读取单个配置,使用`@ConfigurationProperties`封装多个配置项,并实现开发与生产环境配置文件(如application-dev.yml和application-pro.yml)的灵活切换,提升项目可维护性。
|
6月前
|
JSON fastjson Java
Spring Boot 默认对Json的处理
本文详解Spring Boot中JSON处理,涵盖Jackson与FastJson的使用对比、null值处理及统一返回结构封装,提升接口数据规范性与可读性。
|
6月前
|
存储 Java API
Spring Boot使用slf4j进行日志记录
本文介绍了在Spring Boot项目中使用SLF4J结合Logback进行日志管理的方法。通过配置`application.yml`和`logback.xml`,实现日志级别、输出格式、文件存储与滚动策略的灵活控制,并推荐使用SLF4J门面模式替代直接调用具体日志实现,提升系统可维护性与扩展性。
|
6月前
|
项目管理 开发者
业务架构图
本文系统阐述了业务架构图的核心概念与绘制方法,涵盖业务定义、架构分层(组织层、应用层、能力层、基础层)、模块划分及功能分解,并结合医院场景示例,说明如何通过分层、分模块、分功能构建清晰的业务视图,提升客户理解与开发效率。
|
6月前
|
存储 缓存 负载均衡
Nacos注册中心
本文介绍Nacos的安装部署、服务注册与发现、权重控制、集群隔离及临时/持久实例等核心功能,涵盖从环境搭建到高级配置的完整实践,助力微服务架构高效管理。
 Nacos注册中心
|
6月前
|
Java 关系型数据库 MySQL
Spring Boot事务配置管理
本文介绍了Spring Boot中事务的使用及常见陷阱。通过@Transactional注解可轻松实现事务管理,确保数据操作的原子性。重点剖析了三大易踩坑点:异常类型不匹配导致未回滚、try-catch吞掉异常、事务与锁范围不一致引发并发问题,助你在实际项目中有效规避风险。
|
6月前
|
XML Java 数据库连接
Spring Boot集成MyBatis
本文系统讲解Spring Boot集成MyBatis的两种方式:基于XML和注解。涵盖依赖配置、yml设置、驼峰命名映射,并详解@Select、@Insert等注解用法及@Param、@Results问题解决方案,结合实战示例,具有较强实用性,适用于日常开发参考。
|
6月前
|
前端开发 JavaScript Java
Spring Boot中使用拦截器
本文详解Spring Boot拦截器的原理与使用,涵盖定义、配置、静态资源处理及登录校验、注解控制等实战场景,助你掌握AOP思想在请求拦截中的应用。