@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 注解方法时,参数 是通过 @Autowrite 注解方式,进行自动注入的,所以可以适用任何@Autowrite配合适用的任意注解。

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

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

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

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

你可能感兴趣的:(spring)