Spring基於xml自動裝配
阿新 • • 發佈:2021-01-20
基於xml自動裝配
首先寫兩個類Dept類和Emp類。
Dept類:
package com.Keafmd.spring5.autowire;
/**
* Keafmd
*
* @ClassName: Dept
* @Description: 部門類
* @author: 牛哄哄的柯南
* @date: 2021-01-16 13:43
*/
public class Dept {
@Override
public String toString() {
return "Dept{}";
}
}
Emp類:
package com.Keafmd.spring5.autowire;
/**
* Keafmd
*
* @ClassName: Emp
* @Description: 員工類
* @author: 牛哄哄的柯南
* @date: 2021-01-16 13:42
*/
public class Emp {
private Dept dept; // id和這裡保持一致
public void setDept(Dept dept) {
this.dept = dept;
}
@Override
public String toString() {
return "Emp{" +
"dept=" + dept +
'}';
}
public void test(){
System.out.println(dept);
}
}
手動裝配
手動裝配的bean5.xml:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="emp" class="com.Keafmd.spring5.autowire.Emp">
<!--手動裝配-->
<property name="dept" ref="dept"></property>
</bean>
<bean id="dept" class="com.Keafmd.spring5.autowire.Dept"></bean>
</beans>
測試程式碼:
package com.Keafmd.spring5.testdemo;
import com.Keafmd.spring5.autowire.Emp;
import com.Keafmd.spring5.bean.Orders;
import com.Keafmd.spring5.collectiontype.Book;
import com.Keafmd.spring5.collectiontype.Course;
import com.Keafmd.spring5.collectiontype.Stu;
import com.Keafmd.spring5.factorybean.MyBean;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
/**
* Keafmd
*
* @ClassName: TestSpring5demo1
* @Description: 測試類
* @author: 牛哄哄的柯南
* @date: 2021-01-15 14:30
*/
public class TestSpring5demo1 {
@Test
public void test5(){
ApplicationContext context = new ClassPathXmlApplicationContext("bean5.xml");
Emp emp = context.getBean("emp",Emp.class);
System.out.println(emp);
}
}
測試結果:
Emp{dept=Dept{}}
Process finished with exit code 0
自動裝配
自動裝配分為兩種方式:根據屬性名稱自動注入,根據屬性型別自動注入。
自動裝配的配置檔案:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<!--自動裝配
bean標籤屬性 autowire ,配置自動裝配
autowire屬性常用的兩個值:
byName 根據屬性名稱自動注入 ,要注入的那個值bean的id值要和類裡面屬性名稱一樣
byType:根據屬性型別自動注入
-->
<bean id="emp" class="com.Keafmd.spring5.autowire.Emp" autowire="byType">
<!--手動裝配-->
<!-- <property name="dept" ref="dept"></property>-->
</bean>
<bean id="dept" class="com.Keafmd.spring5.autowire.Dept"></bean>
<!--根據屬性型別注入,多寫這行就會報錯,型別匹配到了兩個bean,byName不會錯-->
<!-- <bean id="dept1" class="com.Keafmd.spring5.autowire.Dept"></bean>-->
</beans>
測試程式碼相同:
package com.Keafmd.spring5.testdemo;
import com.Keafmd.spring5.autowire.Emp;
import com.Keafmd.spring5.bean.Orders;
import com.Keafmd.spring5.collectiontype.Book;
import com.Keafmd.spring5.collectiontype.Course;
import com.Keafmd.spring5.collectiontype.Stu;
import com.Keafmd.spring5.factorybean.MyBean;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
/**
* Keafmd
*
* @ClassName: TestSpring5demo1
* @Description: 測試類
* @author: 牛哄哄的柯南
* @date: 2021-01-15 14:30
*/
public class TestSpring5demo1 {
@Test
public void test5(){
ApplicationContext context = new ClassPathXmlApplicationContext("bean5.xml");
Emp emp = context.getBean("emp",Emp.class);
System.out.println(emp);
}
}
測試結果:
Emp{dept=Dept{}}
Process finished with exit code 0
這就是自動裝配,但是這種基於xml自動裝配並不常用,常用的是基於註解的。
以上就是基於xml的自動裝配。
看完如果對你有幫助,感謝點贊支援!
如果你是電腦端的話,看到右下角的 “一鍵三連” 了嗎,沒錯點它[哈哈]
加油!
共同努力!
Keafmd