@Configuration

简介: 被 `@Configuration` 标注的类视为Spring配置类,相当于XML配置文件。通过 `@Bean` 注解注册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

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

相关文章
|
2月前
|
运维 监控 安全
为什么禁止使用 Executors 创建线程池?
Java并发中,`Executors`快捷方法易导致OOM或系统雪崩,因隐藏关键配置。阿里手册禁止其在生产使用。应显式创建`ThreadPoolExecutor`,设定核心参数与有界队列,结合Guava命名线程,提升系统稳定性与可维护性。
|
2月前
|
Java
高效遍历 Map:优先使用 entrySet 或 JDK 8 的 forEach
在Java开发中,遍历Map时推荐使用`entrySet()`或JDK 8的`forEach()`,避免通过`keySet()`重复查找值。前者直接获取键值对,效率更高;后者结合Lambda,代码更简洁。根据场景选择合适方式,提升性能与可读性。
|
2月前
|
安全 Java Spring
2-FilterChainProxy
本文通过源码分析Spring Security中的FilterChainProxy,揭示其如何将多个过滤器封装进SecurityFilterChain,并逐步调试验证过滤器链的加载与执行过程,最终确认FilterChainProxy正是真正执行的安全过滤器链核心。
2-FilterChainProxy
|
2月前
|
安全 Java 应用服务中间件
2-SpringSecurity核心架构
Spring Security基于过滤器链实现安全控制,通过FilterChainProxy整合多个SecurityFilterChain,结合DelegatingFilterProxy实现与Spring容器集成,完成认证授权及异常处理。
|
2月前
|
安全 数据安全/隐私保护
1.什么是权限管理
本文介绍了权限管理中的两大核心机制:认证与授权。认证用于验证用户身份,确保登录安全;授权则根据角色分配权限,控制用户可访问的资源与操作。二者结合,构建起系统安全的基石,有效防止越权操作与数据泄露,保障应用稳定运行。
 1.什么是权限管理
|
2月前
|
存储 缓存 安全
1-常用过滤器介绍
本文介绍了Spring Security核心过滤器链中的15个关键过滤器,涵盖安全上下文管理、认证授权、会话控制及异常处理等机制,体现AOP思想在Web安全中的应用。
|
2月前
|
SQL 监控 安全
生产环境发布管理:从开发到上线的全链路保障
本文详解大型互联网团队的四环境发布体系(DEV→TEST→PRE→PROD),阐述如何通过标准化流程与自动化平台实现安全、高效、可追溯的生产发布,涵盖环境职责、CI/CD核心能力及风险应对策略,助力团队实现快速迭代与零重大故障。
|
2月前
|
调度
线程上下文切换
线程是调度的基本单位,进程是资源分配的基本单位。线程间可共享进程的内存与变量,切换时无需修改;而线程私有数据如栈、寄存器需保存。同进程内线程切换比进程切换更轻量,资源消耗更少,是多线程优于多进程的关键所在。(238字)
|
2月前
|
安全 Java 数据安全/隐私保护
通用权限管理模型
本文介绍了ACL、RBAC等常见权限模型。ACL通过直接授权实现控制,简单直观;RBAC基于角色分配权限,更易管理。文中还详解RBAC0-RBAC3的演进,涵盖角色继承、职责分离等核心概念,帮助建立权限系统的全局认知。
|
2月前
|
JSON 数据格式
JSON入参
本文介绍了接口参数的两种处理方式:一是通过JSONObject接收单个或多个独立参数,二是封装为对象进行传参。后者结合@Valid注解实现数据校验,提升代码规范性与可维护性,适用于复杂参数场景。