@Configuration

简介: 被 `@Configuration` 标注的类视为Spring配置类,相当于XML配置文件,用于定义Bean。通过 `@Bean` 注解注册实例,结合 `AnnotationConfigApplicationContext` 初始化容器,可加载并管理所有Bean,实现基于Java的配置方式。

@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
Java泛型类型擦除以及类型擦除带来的问题
Java泛型在编译时会进行类型擦除,所有泛型信息被移除,替换为原始类型(如Object或限定类型)。这导致List&lt;String&gt;和List&lt;Integer&gt;在运行时等价于List,引发反射可插入不兼容类型等问题。同时,泛型不支持基本数据类型、静态上下文中使用受限,且instanceof无法用于泛型类型判断。编译器通过桥接方法等机制解决多态冲突,并在获取元素时自动插入类型转换,保证类型安全。
|
2月前
|
人工智能 Java easyexcel
[Blog]SpringBootExcel导入(☆☆☆)
本博客基于SpringBoot实现Excel批量导入功能,解决人工逐条录入低效问题。结合MySQL、Maven及EasyExcel/POI技术,提升数据处理效率。通过AI辅助或自主学习完成,培养独立开发与需求分析能力,为转正积累实战经验。(238字)
 [Blog]SpringBootExcel导入(☆☆☆)
|
2月前
|
前端开发 安全 Java
自定义认证前端页面
本文介绍Spring Security前后端整合的实现步骤:前端引入login.html登录页面,后端通过Java代码定义接口与安全配置类,配置表单登录、认证规则及CSRF关闭等,最终启动项目验证登录流程,实现用户认证后访问受保护资源。
自定义认证前端页面
|
2月前
|
安全 Java 开发者
过滤器链加载原理
本文深入解析Spring Security过滤器加载机制,通过源码分析DelegatingFilterProxy、FilterChainProxy与SecurityFilterChain的协作流程,揭示15个安全过滤器如何自动装配并执行,帮助开发者理解框架底层原理,为自定义认证页面奠定基础。
|
2月前
|
存储 缓存 安全
One Trick Per Day
本文详解Java开发中六大易被忽视的陷阱:Map初始化容量设置不当、线程池滥用导致OOM、Arrays.asList的不可变性、遍历Map性能优化、SimpleDateFormat线程安全问题及并发更新加锁策略。通过源码分析与实例演示,揭示问题根源并提供Guava等最佳实践方案,助力提升系统稳定性与性能。
|
2月前
|
Java 调度
ScheduledThreadPoolExecutor解析
ScheduledThreadPoolExecutor适用于延时或周期性任务调度,继承自ThreadPoolExecutor但功能更强大。它通过ScheduledFutureTask实现任务的周期执行,并利用DelayedWorkQueue实现延迟控制,结合siftUp/siftDown维护任务顺序,通过take方法阻塞等待到期任务,从而实现精准的定时调度功能。
ScheduledThreadPoolExecutor解析
|
2月前
|
NoSQL Linux Shell
MongoDB单机部署
本文介绍MongoDB在Windows和Linux系统中的安装、配置与启动方法,包括下载地址、版本选择、解压安装、命令行及配置文件启动方式,并说明如何通过Mongo Shell和Compass图形化工具连接数据库,同时涵盖Linux环境下的服务部署、防火墙设置与安全关闭操作。
MongoDB单机部署
|
2月前
|
前端开发 Java 关系型数据库
[Blog]三层架构:代码本地运行(☆)
本任务要求掌握SpringBoot、MySQL、Maven基础,耗时约2小时。需将项目本地运行,解决JDK、Maven等环境问题,并修复博客详情页异常。关键步骤包括:导入数据库、修正数据库名与连接配置一致、访问http://localhost:8080查看前端页面,定位并修复点击查看博客时的异常问题。
|
2月前
|
安全 Java Spring
认证源码分析与自定义后端认证逻辑
本文深入分析Spring Security认证流程,从UsernamePasswordAuthenticationFilter入手,解析用户认证请求的处理过程,逐步揭示AuthenticationManager、AuthenticationProvider及UserDetailsService等核心组件的协作机制,帮助理解如何基于源码实现自定义认证逻辑。
|
2月前
|
存储 缓存 安全
常用过滤器介绍
本文介绍了Spring Security中的核心过滤器链,涵盖SecurityContextPersistenceFilter、CsrfFilter、LogoutFilter等15个关键过滤器的作用与执行顺序。每个过滤器各司其职,如维护安全上下文、处理认证、防止CSRF攻击、管理会话等,共同构建起完整的安全控制流程。实际加载的过滤器会根据配置动态调整,并非一成不变。