spring-配置bean(2、基于JavaConfig的配置)
来源:互联网 发布:淘宝新店流量扶持 编辑:程序博客网 时间:2024/06/05 08:09
上一篇文章中说了spring自动配置,接下来写下显示配置中的通过Java代码装配bean。
通过Java配置bean大多时候比XML配置bean更为方便,因为它就是一个普通的Java代码,只是因为这个代码是JavaConfig,所以它不包含任何逻辑关系,仅仅收集各个组件。
写几个代码来当例子
如在上一节中,我们说了JavaConfig形式如下,里面没有任何内容,仅仅包含了一个@Configuration和一个@ComponentScan来自动扫描
package test;import org.springframework.context.annotation.ComponentScan;import org.springframework.context.annotation.Configuration;@Configuration@ComponentScanpublic class CDPlayerConfig {}
那么此时我把@ComponentScan注解去掉,这样会导致这个Java类无法扫描bean,即无法自动配置bean了
package test;import org.springframework.context.annotation.Configuration;@Configurationpublic class CDPlayerConfig {}
那么无法自动配置bean,那么此时就只能手动配置bean了,显示地返回一个bean对象,此时要用到@Bean注解(可以说@Bean就是写在带有@Configuration中的注解,用于创建bean)。(sgtPeppers等代码请看第一节)。上一节中我说过,其实bean就是返回一个实例化对象,从而将”A a;” 变成等效于“A a=new A();”的效果。此例中就是如此,直接返回一个new SgtPeppers();
package test;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.Bean;@Configurationpublic class CDPlayerConfig { @Bean public CompactDisc sgtPeppers(){ return new SgtPeppers(); }}
接下来假设有一个CDPlayer bean 依赖于CompactDisc bean。那么如何将它们装配在一起?
在JavaConfig中装配bean的最简单的方案就是直接引用创建了bean的方法(此例中即上面一个代码块中的 sgtPeppers()方法。它返回了一个对象,即创建了一个bean)
package test;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.ComponentScan;import org.springframework.context.annotation.Configuration;@Configuration@ComponentScanpublic class CDPlayerConfig { @Bean public CompactDisc sgtPeppers(){ return new SgtPeppers(); } //如下,直接引用SgtPeppers()方法 @Bean public CDPlayer cdPlayer(){ return new CDPlayer(sgtPeppers()); }}
此例cdPlayer()像sgtPeppers()一样,使用了@Bean注解,并返回一个bean。但是这样还有种更好的引用bean的方法。即通过构造器来引用其他的bean。这种通过构造器的方式通常是最佳选择,因为这样不用强制把要引用的bean和本bean写在同一个JavaConfig中(如这个代码中,cdPlayer()可以写在其他的class里;但是上面的直接引用sgtPeppers()的要求两个方法写在一个class里)
package test;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.ComponentScan;import org.springframework.context.annotation.Configuration;@Configuration@ComponentScanpublic class CDPlayerConfig { @Bean public CompactDisc sgtPeppers(){ return new SgtPeppers(); } //如下,通过构造器来引用 @Bean public CDPlayer cdPlayer(CompactDisc sgtPeppers){ return new CDPlayer(sgtPeppers); }}
还有一种Setter方法。
package test;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.ComponentScan;import org.springframework.context.annotation.Configuration;@Configuration@ComponentScanpublic class CDPlayerConfig { @Bean public CompactDisc sgtPeppers(){ return new SgtPeppers(); } //如下,使用Setter方法 @Bean public CDPlayer cdPlayer(CompactDisc sgtPeppers){ //建立CDPlayer对象 CDPlayer cdPlayer=new CDPlayer(); //通过setter方法注入,这个要单独在CDPlayer类中写setter方法 cdPlayer.setSgtPeppers(sgtPeppers); //返回cdPlayer,此时该对象已经注入sgtPeppers,实现了实例化,是个bean了 return cdPlayer; }}
总而言之,带有@Bean注解的方法可以采用任何有必要的Java功能来产生bean实例
- spring-配置bean(2、基于JavaConfig的配置)
- 【Spring学习28】JavaConfig配置bean
- 第一个Spring JavaConfig注解配置bean
- Spring web基于javaconfig类配置 的web.XML配置
- 译--Spring中 bean定义profiles的使用 javaConfig 和XML配置
- [Spring]基于注解的形式配置Bean
- Spring笔记2-基于注解的方式配置Bean
- spring(三)(基于注解的方式配置bean)
- Java Spring Tutorial -- 基于Bean的配置 @Configuration @Bean
- Spring-基于注解的配置[01定义Bean+扫描Bean]
- Spring基于注解配置Bean
- 关于spring data redis使用javaConfig的基本配置
- Spring实战——XML和JavaConfig的混合配置
- 用javaConfig注解创建spring 工程的基本配置
- 利用JavaConfig配置Spring及SpringMvc的开发环境
- Spring实战——XML和JavaConfig的混合配置
- Spring MVC 零配置 / Spring MVC JavaConfig
- springmvc的javaconfig的配置
- 漫画加载,频道管理(Myadapter)
- POJ
- Windows“启动”文件夹
- linux学习笔记之linux系统启动过程
- Hadoop 安装指南
- spring-配置bean(2、基于JavaConfig的配置)
- hadoop 小问题环境设置
- 漫画加载,频道管理(MyFragment)
- AtCoder regular contest 081 E
- 害死人不偿命的-3n-1-猜想
- 漫画加载,频道管理(SecondActivity)
- sass混合器,选择器的继承
- shell脚本: 查看linux用户组,以及每个组中有哪些用户
- keras中文文档笔记17——将Keras作为tensorflow的精简接口