柚子快報(bào)邀請(qǐng)碼778899分享:java Bean的自動(dòng)裝配
柚子快報(bào)邀請(qǐng)碼778899分享:java Bean的自動(dòng)裝配
目錄結(jié)構(gòu)
導(dǎo)入pom.xml依賴包
People類,人可以有多個(gè)寵物
package com.qing;
public class People {
private Cat cat;
private Dog dog;
private String name;
public Cat getCat() {
return cat;
}
public void setCat(Cat cat) {
this.cat = cat;
}
public Dog getDog() {
return dog;
}
public void setDog(Dog dog) {
this.dog = dog;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "People{" +
"cat=" + cat +
", dog=" + dog +
", name='" + name + '\'' +
'}';
}
}
Cat類
package com.qing;
public class Cat {
public void shout(){
System.out.println("喵");
}
}
Dog類
package com.qing;
public class Dog {
public void shout(){
System.out.println("汪");
}
}
applicationContext.xml
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd">
測試代碼
import com.qing.People;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class MyTest {
@Test
public void test(){
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
People people = context.getBean("people", People.class);
people.getDog().shout();
people.getCat().shout();
}
}
byName自動(dòng)裝配
?byName:會(huì)自動(dòng)在容器上下文查找,和自己這個(gè)對(duì)象的set方法后面值對(duì)應(yīng)的bean中的id
如果id不滿足對(duì)象的名字,則會(huì)報(bào)錯(cuò);例如:dog222不滿足對(duì)象的id名字
byType自動(dòng)裝配
?byType:會(huì)自動(dòng)在容器上下文中查找,和自己對(duì)象屬性相同的bean,可以省略id
不能有兩個(gè)一樣的id,屬性名可以不同
注解實(shí)現(xiàn)自動(dòng)裝配
導(dǎo)入約束,并開啟注解的支持
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
在屬性上配置注解
@Autowired
private Cat cat;
@Autowired
private Dog dog;
private String name;
?如果@Autowired自動(dòng)裝配的環(huán)境比較復(fù)雜,自動(dòng)裝配無法通過一個(gè)注解@Autowired完成的時(shí)候,我們可以使用@Qualifier(value="xxx")去配置@Autowired的使用,指定一個(gè)唯一的bean對(duì)象注入
總結(jié):
byname需要保證所有的bean的id唯一,并且這個(gè)bean需要和自動(dòng)注入的屬性的set方法的值一致bytype需要保證所有bean的class唯一,并且這個(gè)bean需要和自動(dòng)注入的屬性類型一致
所有的類都需裝入spring里面,所有的bean都需要去容器去獲取,容器獲取的bean是一個(gè)對(duì)象
柚子快報(bào)邀請(qǐng)碼778899分享:java Bean的自動(dòng)裝配
精彩內(nèi)容
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場。
轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。