Spring 装配Bean(二):在JAVA代码中装配bean

Spring 装配Bean(二):在JAVA代码中装配bean


  在大多数情况下通过Spring组件扫描以及自动装配bean都是更为推荐的,但是当我们想把第三方类库中的组件添加到IOC容器中时,我们不可能到源代码中去添加 @Component@AutoWired注解,所以这种时候我们不能使用自动化装配。
  而显示装配方式有两种,通过java的装配和通过XML装配,这篇博客主要介绍通过JAVA代码的装配方式。

创建配置类

  在自动化装配中我们也用到过配置类,关键在于给类添加@Configuration注解,。而后我们对Spring bean的配置和装配都应该在配置类中完成。

package soundSystem;
/*java Spring配置类*/
import org.springframework.context.annotation.Configuration;

/**
@Configuration注解标记Spring配置类
*/
@Configuration
public class CDPlayerConfig {
}

声明简单的bean

  声明简单的bean只需要在javaConfig类中添加一个创建所需类型实例的方法并使用@Bean注解

@Bean
public CompactDisc sgtPeppers(){
	return new SgtPeppers();
}

  bean的ID和方法名默认一致,或者可以通过name属性指定

@Bean(name="lonelyHeartsClubBand")
public CompactDisc sgtPeppers(){
	return new SgtPeppers();
}

  事实上这个方法不一定非得是只有一个返回构造器产生的实例,他只需要最后返回的是一个某类型的对象即可,所以方法体可以更加丰富。例如下面的代码可以当Spring获取bean时产生一张随机的cd:

@Bean()
public CompactDisc randomBeatlesCD(){
	int choice = (int) Math.floor(Math.random() *4);
	if(choice == 0)
		return new SgtPeppers();
	else if(choice == 1)
		return new WhiteAlbum();
	else if(choice == 2)
		return new HardDasNight();
	else
		return new Revolver();
}

  接下来,和自动装配时一样,我们需要实现将CompactDisc注入到CDPlayer中去。

使用javaConfig配置实现注入

  装配bean时,最简单的就是直接调用之前创建bean的方法:

@Bean
public CDPlayer cdPlayer(){
	return new CDPlayer(sgtPeppers());
}

  CDPlayer同样使用了@Bean注解,说明这个方法创建一个bean实例到IOC容器中,并且把添加了@Bean注解的sgtPeppers()方法传入到CDPlayer的构造器中作为参数以此完成了装配,Spring会拦截对添加注解的方法的直接调用而直接返回容器中的bean。

  还有一种方法是方法中包含一个CompactDisc参数,当Spring调用方法创建CDPlayer bean的时候,自动装配一个CompactDisc到方法中。

@Bean
public CDPlayer cdPlayer(CompactDisc compactDisc){
	return new CDPlayer(compactDisc);
}

  采用setter注入或者调用普通方法也是可以的

@Bean
public CDPlayer cdPlayer(CompactDisc compactDisc){
	CDPlayer cdPlayer = new CDPlayer();
	cdPlayer.setCompactDisc(compactDisc);
	return cdPlayer;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值