1. 程式人生 > 其它 >Spring基於xml自動裝配

Spring基於xml自動裝配

技術標籤:Spring5springbeanxml

基於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