- 注解@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就是同类型的。