@Bean 注解方法时,参数自主选择注入的bean

众所周知
当@Bean 注解使用在方法上面是,会被spring自动作为一个bean进行注入,
bean的类型为该方法的返回类型,
bean的id为方法名称
方法参数,会通过spring自动注入

问题是:
方法参数的自动注入原理

@Component
public class Test{
	@Bean
	public MyBean mytest(){
		return new MyBean();
	}
	@Bean
	public MyBean mytest2(){
		return new MyBean();
	}

	@Bean
	public MyBeanTest MyBeanTest(@Qualifier(value="mytest") Mybean mytest){
		return MyBeanTest (mytest);
	}
	@Bean
	public MyBeanTest MyBeanTest2(@Qualifier(value="mytest2") Mybean mytest){
		return MyBeanTest (mytest);
	}
}

public Class MyBean{
}

public Class MyBeanTest{
}

从上述例子中可以看出使用@Bean 注解方法时,参数 是通过 @Autowrited 注解方式,进行自动注入的,所以可以适用任何@Autowrited配合适用的任意注解。

扩展:
@Autowite 配套使用的注解

1、@Primary
该注解指定 当存在多个同类型的bean时,具有当前注解的bean会被作为首选

2、@Qualifier
该注解指定 当存在多个同类型的bean时,通过其配置的value值,选择对应ID的Bean

再扩展:
什么时候会出现同类型的bean
1、当两个类实现同一个接口时,若同时将这两个类声明成spring中的bean这时候,两个bean的类型就相同
2、当使用@bean注解方法时,两个方法具有相同的返回类型是,生成的两个bean就是同类型的。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值