Spring @Configuration注解的Full和Lite模式详解
需积分: 5 123 浏览量
更新于2024-08-03
收藏 3KB MD 举报
@Configuration的Full和Lite模式
在 Spring 框架中,@Configuration 注解用于标记一个类作为配置类,该类中的方法将被用来生成 Bean 对象。但是,@Configuration 注解有两种模式:Full 模式和 Lite 模式。今天我们将深入探讨这两种模式的区别和应用场景。
Full 模式
Full 模式是 @Configuration 注解的默认模式。在 Full 模式下,Spring 会为配置类生成一个代理对象,该代理对象将负责管理所有的 Bean 对象。这种模式下,配置类中的方法将被调用一次,并且生成的 Bean 对象将被缓存起来,以便后续使用。
例如,在下面的代码中,我们定义了一个配置类 DataSourceConfig,该类中有两个方法:dataSource() 和 transactionManager()。在 Full 模式下,Spring 会生成一个代理对象,该代理对象将负责管理 dataSource 和 transactionManager 两个 Bean 对象。
```java
@Configuration
public class DataSourceConfig {
@Bean
public DataSource dataSource() {
return new DataSource();
}
@Bean(name = "transactionManager")
public DataSourceTransactionManager transactionManager() {
return new DataSourceTransactionManager(dataSource());
}
}
```
在 Full 模式下,当我们调用 dataSource() 方法时,Spring 会生成一个代理对象,该代理对象将负责管理 dataSource Bean 对象。然后,当我们调用 transactionManager() 方法时,Spring 会使用缓存的 dataSource Bean 对象,而不是生成一个新的对象。
Lite 模式
Lite 模式是 @Configuration 注解的另外一种模式。在 Lite 模式下,Spring 不会生成代理对象,而是直接使用配置类中的方法来生成 Bean 对象。这种模式下,配置类中的方法将被调用多次,每次调用都会生成一个新的 Bean 对象。
例如,在下面的代码中,我们定义了一个配置类 AConfig,该类中有一个方法 b()。在 Lite 模式下,Spring 会直接使用 b() 方法来生成 Bean 对象,而不是生成代理对象。
```java
public class AConfig {
@Bean
public B b() {
return new B();
}
}
```
在 Lite 模式下,当我们调用 b() 方法时,Spring 会直接生成一个新的 B 对象,而不是使用缓存的对象。
Full 模式和 Lite 模式的区别
Full 模式和 Lite 模式的主要区别在于是否生成代理对象。在 Full 模式下,Spring 会生成代理对象,该代理对象将负责管理所有的 Bean 对象,而在 Lite 模式下,Spring 不会生成代理对象,而是直接使用配置类中的方法来生成 Bean 对象。
Full 模式的生效条件
Full 模式的生效条件是:
* 配置类上标注有 @Configuration 注解
* proxyBeanMethods 属性为 true(默认值)
Lite 模式的生效条件
Lite 模式的生效条件是:
* 配置类上标注有 @Component 注解
* 配置类上标注有 @ComponentScan 注解
* 配置类上标注有 @Import 注解
* 配置类上标注有 @ImportResource 注解
* 配置类中存在 @Bean 方法,但是没有任何注解
Full 模式和 Lite 模式是两种不同的配置模式,它们都有自己的应用场景。开发者需要根据实际情况选择合适的模式,以确保 Spring 框架的正确使用。
2023-08-26 上传
2021-06-11 上传
baidu_16992441
- 粉丝: 311
- 资源: 1041
最新资源
- SOA的权威指南BEA AquaLogic 服务总线(The Definitive Guide to SOA_ BEA AquaLogic Service Bus)
- 接口测试.doc 软件系统的主要测试内容及技术
- ArcGIS+Desktop轻松入门
- JAVA线程与IO总结
- .Apress.PHP.5.Recipes.A.Problem.Solution.Approach.Sep.2005
- 不错的lingo教程
- getting_started_with_Flex3.pdf
- oracle数据库开发的一些经验积累
- altera Nios II 处理器参考手册
- JavaFX Script 语言教程
- JMS简明教程.pdf
- 代码大全2 英文版 pdf
- spring框架技术详解
- 信息系统监理师考试复习资料(真题加答案)
- ARP欺骗程序源代码
- HP.and.MySQL.5.From.Novice.to.Professional.2nd.Edition.Jan.2006