* 1. @Autowired:自动注入:
* 1.默认优先按照类型去容器中找对应的组件,如果找到多个,则按照属性名作为组件 的 id 去容器中查找
* 2.@Qualifier:使用@Qualifier指定需要装配的组件ID,而不是属性名
* 自动装配默认一定要将属性赋值好,没有就报错。
* 可以使用 @Autowired(required=false)
* 3.@Primary:让spring 进行自动装配的时候,默认使用首选的Bean
* 也可以继续使用@Qualifier指定需要装配的bean的名字
@Primary //让spring自动装配时,首先使用加了这个注解的Bean,但是不能加@Qualifiter ,如果加@Qualifiter就使用@Qualifiter指定装配的bean的名字
@Bean("bookDao2")
public BookDao bookDao(){
BookDao bookDao=new BookDao();
bookDao.setLable("2");
return bookDao;
}
@Service
public class BookService {
@Autowired
//@Qualifier("bookDao")
private BookDao bookDao2;
@Override
public String toString() {
return "BookService{" +
"bookDao=" + bookDao2 +
'}';
}
}Repository
public class BookDao {
private String lable="1";
public void print(){
System.out.println("bookDao1");
}
public String getLable() {
return lable;
}
public void setLable(String lable) {
this.lable = lable;
}
@Override
public String toString() {
return "BookDao{" +
"lable='" + lable + '\'' +
'}';
}
}
public class TestAutowired {
AnnotationConfigApplicationContext apx = new AnnotationConfigApplicationContext(MainConfigOpenAutowried.class);
@Test
public void Import(){
BookService bean = apx.getBean(BookService.class);
System.out.println(bean);
}
}