@Configuration

简介: 被 `@Configuration` 标注的类视为Spring配置类,相当于XML配置文件。结合 `@Bean` 可注册Bean实例,通过 `AnnotationConfigApplicationContext` 加载配置类,启动IOC容器并管理Bean生命周期,配置类本身也会被作为Bean加载。

被 @Configuration 标注的类,会被 Spring 的IOC容器认定为配置类。
一个被 @Configuration 标注的类,相当于一个 applicationContext.xml 的配置文件。
例如:声明一个类,并标注 @Configuration 注解:
Java
运行代码
复制代码
1
2
3
4
5
6
7
@Configuration
public class ConfigurationDemo {
@Bean
public Date currentDate() {
return new Date();
}
}
上述注册Bean的方式类比于xml:
XML
复制代码
1


之后使用注解启动方式,初始化一个IOC容器,并打印IOC容器中的所有bean的name:
Java
运行代码
复制代码
1
2
3
4
5
6
7
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);
}
}
输出结果:
Java
运行代码
复制代码
1
2
3
4
5
6
7
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
可以发现组件,以及配置类本身被成功加载。

相关文章
|
9月前
|
数据库
各种锁的专题
数据库锁机制简介:包括写锁(排他)、共享锁(读)、排他锁、间隙锁、行锁、表锁及分布式锁,用于控制并发访问,保证数据一致性与完整性。
|
9月前
|
存储 Java 编译器
Java泛型类型擦除以及类型擦除带来的问题
Java泛型在编译时会进行类型擦除,所有泛型信息被移除,替换为原始类型(如Object或限定类型)。例如,List<String>和List<Integer>在运行时均为List。类型检查在编译期完成,基于引用而非实际对象。擦除导致反射可绕过泛型限制、无法使用基本类型、instanceof失效等问题,并影响多态实现,需通过桥方法等机制解决。静态成员不能使用类的泛型参数,因其实例化依赖对象创建,而静态上下文无此支持。
|
9月前
|
SQL Dubbo Java
线程池:故障梳理总结
本文从故障与技术双重视角,总结线程池满导致服务不可用的典型场景与根因,涵盖数据库慢查询、连接池配置不当、超时设置缺失等问题,结合真实案例剖析并提出fast-fail、流控、背压等防护策略,助力开发者提升系统稳定性。
|
9月前
|
Java 调度
线程池
本文深入解析Java线程池核心类ThreadPoolExecutor的实现原理,通过分析其类图结构、关键成员变量及任务执行流程,揭示线程池如何管理线程创建、任务调度与拒绝策略。重点剖析Worker类作为执行单元的核心作用,以及corePoolSize、maximumPoolSize、workQueue和keepAliveTime等参数在运行机制中的协同关系,帮助理解线程池的动态扩容、任务排队与线程复用逻辑。
|
9月前
|
监控 算法 Unix
Thread.sleep(0) 到底有什么用(读完就懂)
Thread.Sleep用于让线程暂停执行一段时间,不参与CPU竞争。Sleep(1000)并不保证精确唤醒时间,取决于系统调度;Sleep(0)则触发立即重新计算线程优先级,让出CPU给其他线程,常用于避免界面假死。
|
9月前
|
存储 JSON NoSQL
3-MongoDB常用命令
本文介绍如何使用MongoDB存储文章评论数据,涵盖数据库与集合的创建、删除,文档的增删改查、批量操作、投影查询、分页排序等功能,结合实际示例说明CRUD操作及注意事项,帮助快速掌握MongoDB基本用法。
|
9月前
|
缓存 Java 数据库连接
1.常见配置
MyBatis配置优先级:方法参数 > resource/url > properties体内。核心属性包括缓存、延迟加载、主键生成等。支持多环境配置,通过environments指定,默认使用default环境。事务管理支持JDBC和MANAGED,与Spring集成时由Spring接管。详细配置参考官方Java API文档。
|
9月前
|
SQL 关系型数据库 Java
3.分页
本文介绍了五种分页实现方式:MyBatis自带RowBounds内存分页、PageHelper插件分页、SQL原生分页、数组分页及拦截器分页。前两者属逻辑分页,查全量数据后处理,小数据量高效但内存开销大;后三者为物理分页,直接在数据库层分页,适合大数据量场景。推荐优先使用物理分页以提升性能与系统稳定性。(238字)
|
9月前
|
存储 安全 小程序
1.认识OAuth2.0
OAuth2.0是一种开放授权标准,允许第三方应用在用户授权下安全访问资源,无需获取用户账号密码。其四种模式——授权码、简化、密码和客户端模式,适用于不同场景,广泛用于API授权与单点登录,保障系统间资源共享的安全性与灵活性。
|
9月前
|
安全 Java 开发工具
1.工程搭建与验证
本文介绍如何基于阿里云脚手架快速搭建SpringBoot工程(选用2.7.6版本),并整合Spring Security。内容涵盖项目创建、代码导入、Web依赖引入、接口编写与验证,以及Spring Security的集成与默认登录配置。通过简单步骤实现安全访问控制,附完整代码仓库及分支地址,便于学习参考。(238字)

热门文章

最新文章