Spring 在xml中的自动装配

14 篇文章 0 订阅

普通类进行自动装配

创建两个bean:

public class Teacher {

    private Integer tid;
    private String tname;

    public Teacher() {
    }

    public Teacher(Integer tid, String tname) {
        this.tid = tid;
        this.tname = tname;
    }

    public void setTid(Integer tid) {
        this.tid = tid;
    }

    public void setTname(String tname) {
        this.tname = tname;
    }

    @Override
    public String toString() {
        return "Teacher{" +
                "id=" + tid +
                ", name='" + tname + '\'' +
                '}';
    }
}
public class Student {

    private Integer sid;
    private String sname;
    private Teacher stea;

    public Student(){

    }

    public void setSid(Integer sid) {
        this.sid = sid;
    }

    public void setSname(String sname) {
        this.sname = sname;
    }

    public void setStea(Teacher stea) {
        this.stea = stea;
    }

    @Override
    public String toString() {
        return "Student{" +
                "sid=" + sid +
                ", sname='" + sname + '\'' +
                ", stea=" + stea +
                '}';
    }
}

在resources目录下创建spring.spring_student.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
        https://www.springframework.org/schema/beans/spring-beans.xsd">
        
    <bean id="stea" class="com.mine.bean.Teacher">
        <property name="tid"><value type="java.lang.Integer">202</value></property>
        <property name="tname"><value type="java.lang.String">teaTwo</value></property>
    </bean>
    <!-- autowire 设置 byName,bean对象中的属性名与另一个bean对象的name或id一致进行注入 -->
    <!-- autowire 设置 byType,bean对象中的属性类型与另一个bean对象的class类型一致进行注入 -->
    <bean id="student" class="com.mine.bean.Student" lazy-init="true" autowire="byName">
        <property name="sid">
            <value type="java.lang.Integer">105</value>
        </property>
        <property name="sname">
            <value type="java.lang.String">fff</value>
        </property>
    </bean>

</beans>
public class MyMain {
    public static void main(String[] args) {
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("spring/spring_student.xml");
        Student student = (Student) context.getBean("student");
        System.out.println(student);
    }
}

结果:

Student{sid=105, sname='fff', stea=Teacher{id=202, name='teaTwo'}}

Process finished with exit code 0

接口进行自动装配

创建接口:

public interface TestInterface {

}

创建实现类:

public class TestInterfaceImpl implements TestInterface {

    @Override
    public String toString() {
        return "TestInterfaceImpl{}";
    }
}

创建bean:

public class Student {

    private TestInterface testInterface;

    public Student() {
    }

    public Student(TestInterface testInterface) {
        this.testInterface = testInterface;
    }

    public void setTestInterface(TestInterface testInterface) {
        this.testInterface = testInterface;
    }

    @Override
    public String toString() {
        return "Student{" +
                "testInterface=" + testInterface +
                '}';
    }
}

在resources目录下创建spring.spring_student.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
        https://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="testInterface" class="com.mine.inter.TestInterfaceImpl"></bean>
    <!-- autowire 设置 byName,按照名字进行找寻 找不到就没有 找到就装配 -->
    <!-- autowire 设置 byType,如果有两个以上对应的类型 标签配置时直接报错 采用内部形式 ref自己指定的形式 -->
    <bean id="student" class="com.mine.bean.Student" lazy-init="true" autowire="byName"></bean>

</beans>
public class MyMain {
    public static void main(String[] args) {
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("spring/spring_student.xml");
        Student student = (Student) context.getBean("student");
        System.out.println(student);
    }
}

结果:

Student{testInterface=TestInterfaceImpl{}}

Process finished with exit code 0
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值