Spring中关于xml自动装配

简介: Spring中关于xml自动装配

前言:自动装配是指根据指定装配规则(属性名称或者属性类型),Spring自动将匹配的属性值进行注入

自动装配的过程

bean 标签属性 autowire,配置自动装配 autowire 属性常用两个值:

  • byName 根据属性名称注入 ,注入值 bean 的 id 值和类属性名称一样
  • byType 根据属性类型注入

1.根据属性名称自动注入

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="person" class="iocbean.byxml.automatic.Person">
        <property name="name" value="小明"></property>
    </bean>

    <bean id="student" class="iocbean.byxml.automatic.Student" autowire="byName">
        <!--有了autowire="byName" 之后就不需要手动注入了
            注入值 bean 的 id 值和类属性名称一样即可-->
        <!--<property name="person" ref="person"></property>-->
    </bean>
</beans>

Person类:

public class Person {
     
    public String name;

    public void setName(String name) {
     
        this.name = name;
    }

    @Override
    public String toString() {
     
        return "Person{" +
                "name='" + name + '\'' +
                '}';
    }
}

Student类:

public class Student {
      
    private Person person;
    private Person person1;

    public void setPerson(Person person) {
      
        this.person = person;
    }

    public void setPerson1(Person person1) {
      
        this.person1 = person1;
    }

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

测试类:

public class DemoTest {
       
    @Test
    public void test1(){
       
        ApplicationContext context = new ClassPathXmlApplicationContext("iocbean/byxml/automatic/bean.xml");

        Student student = context.getBean("student", Student.class);

        System.out.println(student);
    }
}

输出结果:

Student{person=Person{name='小明'}, person1=null}

Process finished with exit code 0


2.根据属性类型自动注入

<bean id="student1" class="iocbean.byxml.automatic.Student" autowire="byType"> <!--有了autowire="byType" 之后就不需要手动注入了 所有同类型的属性都将被注入一样的值--> <!--<property name="person" ref="person"></property>--> </bean> 

测试类:

public class DemoTest {
           @Test public void test1(){
           ApplicationContext context = new ClassPathXmlApplicationContext("iocbean/byxml/automatic/bean.xml"); Student student1 = context.getBean("student1", Student.class); System.out.println(student1); } } 

输出结果:

Student{person=Person{name='小明'}, person1=Person{name='小明'}} Process finished with exit code 0 

可以看到
byName 根据属性名称注入 ,注入值 bean 的 id 值和类属性名称一样才可以注入,所以person有值,person1为null
而byType 根据属性类型注入只需要类属性的类型一样就可以注入,person、person1的类型都为Person,所以都有值。

目录
相关文章
|
3月前
|
XML Java 数据格式
Spring从入门到入土(xml配置文件的基础使用方式)
本文详细介绍了Spring框架中XML配置文件的使用方法,包括读取配置文件、创建带参数的构造对象、使用工厂方法和静态方法创建对象、对象生命周期管理以及单例和多例模式的测试。
151 7
Spring从入门到入土(xml配置文件的基础使用方式)
|
22天前
|
XML Java 数据格式
【SpringFramework】Spring IoC-基于XML的实现
本文主要讲解SpringFramework中IoC和DI相关概念,及基于XML的实现方式。
108 69
|
27天前
|
XML Java 数据格式
使用idea中的Live Templates自定义自动生成Spring所需的XML配置文件格式
本文介绍了在使用Spring框架时,如何通过创建`applicationContext.xml`配置文件来管理对象。首先,在resources目录下新建XML配置文件,并通过IDEA自动生成部分配置。为完善配置,特别是添加AOP支持,可以通过IDEA的Live Templates功能自定义XML模板。具体步骤包括:连续按两次Shift搜索Live Templates,配置模板内容,输入特定前缀(如spring)并按Tab键即可快速生成完整的Spring配置文件。这样可以大大提高开发效率,减少重复工作。
使用idea中的Live Templates自定义自动生成Spring所需的XML配置文件格式
|
5月前
|
XML Java 数据格式
Spring5入门到实战------7、IOC容器-Bean管理XML方式(外部属性文件)
这篇文章是Spring5框架的实战教程,主要介绍了如何在Spring的IOC容器中通过XML配置方式使用外部属性文件来管理Bean,特别是数据库连接池的配置。文章详细讲解了创建属性文件、引入属性文件到Spring配置、以及如何使用属性占位符来引用属性文件中的值。
Spring5入门到实战------7、IOC容器-Bean管理XML方式(外部属性文件)
|
1月前
|
XML Java 数据格式
Spring容器Bean之XML配置方式
通过对以上内容的掌握,开发人员可以灵活地使用Spring的XML配置方式来管理应用程序的Bean,提高代码的模块化和可维护性。
66 6
|
4月前
|
XML Java 数据格式
Spring IOC—基于XML配置Bean的更多内容和细节(通俗易懂)
Spring 第二节内容补充 关于Bean配置的更多内容和细节 万字详解!
315 18
|
4月前
|
XML Java 数据格式
spring复习02,xml配置管理bean
详细讲解了Spring框架中基于XML配置文件管理bean的各种方式,包括获取bean、依赖注入、特殊值处理、属性赋值、集合类型处理、p命名空间、bean作用域及生命周期和自动装配。
spring复习02,xml配置管理bean
|
3月前
|
XML Java 数据格式
手动开发-简单的Spring基于XML配置的程序--源码解析
手动开发-简单的Spring基于XML配置的程序--源码解析
96 0
|
5月前
|
XML Java 数据格式
Spring5入门到实战------3、IOC容器-Bean管理XML方式(一)
这篇文章详细介绍了Spring框架中IOC容器的Bean管理,特别是基于XML配置方式的实现。文章涵盖了Bean的定义、属性注入、使用set方法和构造函数注入,以及如何注入不同类型的属性,包括null值、特殊字符和外部bean。此外,还探讨了内部bean的概念及其与外部bean的比较,并提供了相应的示例代码和测试结果。
Spring5入门到实战------3、IOC容器-Bean管理XML方式(一)
|
5月前
|
XML Java 数据格式
Spring5入门到实战------4、IOC容器-Bean管理XML方式、集合的注入(二)
这篇文章是Spring5框架的实战教程,主题是IOC容器中Bean的集合属性注入,通过XML配置方式。文章详细讲解了如何在Spring中注入数组、List、Map和Set类型的集合属性,并提供了相应的XML配置示例和Java类定义。此外,还介绍了如何在集合中注入对象类型值,以及如何使用Spring的util命名空间来实现集合的复用。最后,通过测试代码和结果展示了注入效果。
Spring5入门到实战------4、IOC容器-Bean管理XML方式、集合的注入(二)