无标题

简介: `@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月前
|
缓存 JSON 前端开发
Spring Boot集成Thymeleaf模板引擎
Thymeleaf 是现代Java模板引擎,支持静态原型与动态数据融合,可直接浏览器预览,提升前后端协作效率,适用于Spring Boot项目,实现页面自然展示与高效开发。
Spring Boot集成Thymeleaf模板引擎
|
6月前
|
JSON Java Maven
SpringBoot使用汇总
Spring Boot 是基于 Spring 的轻量级框架,旨在简化配置、快速启动项目。它通过自动配置和约定优于配置的理念,整合第三方库,实现开箱即用,极大提升了开发效率,是当前 Java 微服务开发的主流选择。
|
6月前
|
监控 Java Sentinel
熔断降级
熔断降级是防止服务雪崩的核心机制,通过Sentinel实现。熔断由客户端断路器统计异常或慢请求比例,超阈值后拦截请求;降级则返回默认数据保障体验。结合使用可快速失败、避免级联故障。
|
6月前
|
人工智能 监控 Java
请求限流
本文介绍如何使用Sentinel实现接口限流与降级,通过配置QPS阈值保护商品查询接口,并结合JMeter进行压测验证。同时讲解了线程隔离机制,包括信号量隔离的应用,确保系统在高并发下的稳定性。
请求限流
|
6月前
|
存储 缓存 负载均衡
Nacos注册中心
本文介绍Nacos的安装部署、服务注册与发现、权重控制、集群隔离及临时/持久实例等核心功能,涵盖从环境搭建到高级配置的完整实践,助力微服务架构高效管理。
 Nacos注册中心
|
6月前
|
缓存 Java 数据库
Spring Boot中使用监听器
本文系统介绍了Web监听器的概念及在Spring Boot中的应用,涵盖监听Servlet上下文、Session会话与Request请求的实战案例,并讲解自定义事件与监听器的实现方式,适用于数据缓存、在线人数统计、用户行为追踪等场景,具有较强的实用价值。
|
6月前
|
前端开发 JavaScript Java
Spring Boot中使用拦截器
本文详解Spring Boot拦截器的原理与使用,涵盖定义、配置、静态资源处理及登录校验、注解控制等实战场景,助你掌握AOP思想在请求拦截中的应用。
|
6月前
|
Java 关系型数据库 MySQL
Spring Boot事务配置管理
本文介绍了Spring Boot中事务的使用及常见陷阱。通过@Transactional注解可轻松实现事务管理,确保数据操作的原子性。重点剖析了三大易踩坑点:异常类型不匹配导致未回滚、try-catch吞掉异常、事务与锁范围不一致引发并发问题,助你在实际项目中有效规避风险。