自動注入相關(guān)
1占业、相關(guān)注解以及之間的差異
- @Autowired侵蒙、@Qualifier、@Primary是Spring框架的
@Resource第队、@Inject是java本身的
2)@Autowired
1)按照類型去容器中找哮塞,如果是ioc容器中有多個,再將屬性的名稱作為組件的id去容器中查找
2)@Autowired(required = false)凳谦,作為非必須的裝配
3)@Autowired:構(gòu)造器忆畅、參數(shù)、方法尸执、屬性
@Component
public class Boss {
@Override
public String toString() {
return "Boss{" +
"car=" + car +
'}';
}
//@Autowired標(biāo)注在構(gòu)造器上時家凯,Spring創(chuàng)建容器時缓醋,就會調(diào)用方法,完成賦值
//方法使用的參數(shù)绊诲,自定義類型的值從IOC容器中獲取
@Autowired
public Boss(Car car) {
this.car = car;
System.out.println("有參構(gòu)造器:"+car);
}
public Car getCar() {
return car;
}
//@Autowired標(biāo)注在方法上時送粱,Spring創(chuàng)建容器時,就會調(diào)用方法掂之,完成賦值
//方法使用的參數(shù)抗俄,自定義類型的值從IOC容器中獲取
// @Autowired
public void setCar(Car car) {
this.car = car;
}
private Car car;
}
3)@Qualifier("bookDo2")
該注解可以指定一個具體的bean實(shí)例id
3)@Primary
首選裝配的組件
@Configuration
@ComponentScan({"com.dwd.snail.testspring.test.bean","com.dwd.snail.testspring.test.service","com.dwd.snail.testspring.test.dao","com.dwd.snail.testspring.test.controller"})
public class MainConfig_Autowire {
@Primary
@Bean(value="bookDo2")
public BookDo bookDo(){
BookDo bookDo=new BookDo();
bookDo.setLabel("2");
return bookDo;
}
}
4)@Resource
可以和@Autowired一樣實(shí)現(xiàn)自動裝配功能,但是默認(rèn)按照組件名稱作為組件進(jìn)行裝配世舰,沒有能支持@Autowired(required = false)
5)@Inject
需要導(dǎo)入javax.inject的包动雹,和@Autowired的功能一樣,但是沒有required = false的屬性