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,所以都有值。

目录
相关文章
|
1月前
|
XML Java 数据格式
Spring从入门到入土(xml配置文件的基础使用方式)
本文详细介绍了Spring框架中XML配置文件的使用方法,包括读取配置文件、创建带参数的构造对象、使用工厂方法和静态方法创建对象、对象生命周期管理以及单例和多例模式的测试。
84 7
Spring从入门到入土(xml配置文件的基础使用方式)
|
3月前
|
XML Java 数据格式
Spring5入门到实战------7、IOC容器-Bean管理XML方式(外部属性文件)
这篇文章是Spring5框架的实战教程,主要介绍了如何在Spring的IOC容器中通过XML配置方式使用外部属性文件来管理Bean,特别是数据库连接池的配置。文章详细讲解了创建属性文件、引入属性文件到Spring配置、以及如何使用属性占位符来引用属性文件中的值。
Spring5入门到实战------7、IOC容器-Bean管理XML方式(外部属性文件)
|
5月前
|
XML Java 数据格式
Spring5系列学习文章分享---第一篇(概述+特点+IOC原理+IOC并操作之bean的XML管理操作)
Spring5系列学习文章分享---第一篇(概述+特点+IOC原理+IOC并操作之bean的XML管理操作)
47 1
|
2月前
|
XML Java 数据格式
Spring IOC—基于XML配置Bean的更多内容和细节(通俗易懂)
Spring 第二节内容补充 关于Bean配置的更多内容和细节 万字详解!
212 18
Spring IOC—基于XML配置Bean的更多内容和细节(通俗易懂)
|
2月前
|
XML Java 数据格式
spring复习02,xml配置管理bean
详细讲解了Spring框架中基于XML配置文件管理bean的各种方式,包括获取bean、依赖注入、特殊值处理、属性赋值、集合类型处理、p命名空间、bean作用域及生命周期和自动装配。
spring复习02,xml配置管理bean
|
5月前
|
XML druid Java
Spring5系列学习文章分享---第二篇(IOC的bean管理factory+Bean作用域与生命周期+自动装配+基于注解管理+外部属性管理之druid)
Spring5系列学习文章分享---第二篇(IOC的bean管理factory+Bean作用域与生命周期+自动装配+基于注解管理+外部属性管理之druid)
62 0
|
1月前
|
XML Java 数据格式
手动开发-简单的Spring基于XML配置的程序--源码解析
手动开发-简单的Spring基于XML配置的程序--源码解析
79 0
|
3月前
|
XML Java 数据格式
Spring5入门到实战------3、IOC容器-Bean管理XML方式(一)
这篇文章详细介绍了Spring框架中IOC容器的Bean管理,特别是基于XML配置方式的实现。文章涵盖了Bean的定义、属性注入、使用set方法和构造函数注入,以及如何注入不同类型的属性,包括null值、特殊字符和外部bean。此外,还探讨了内部bean的概念及其与外部bean的比较,并提供了相应的示例代码和测试结果。
Spring5入门到实战------3、IOC容器-Bean管理XML方式(一)
|
3月前
|
XML Java 数据格式
Spring5入门到实战------4、IOC容器-Bean管理XML方式、集合的注入(二)
这篇文章是Spring5框架的实战教程,主题是IOC容器中Bean的集合属性注入,通过XML配置方式。文章详细讲解了如何在Spring中注入数组、List、Map和Set类型的集合属性,并提供了相应的XML配置示例和Java类定义。此外,还介绍了如何在集合中注入对象类型值,以及如何使用Spring的util命名空间来实现集合的复用。最后,通过测试代码和结果展示了注入效果。
Spring5入门到实战------4、IOC容器-Bean管理XML方式、集合的注入(二)
|
3月前
|
XML Java 数据格式
Spring5入门到实战------11、使用XML方式实现AOP切面编程。具体代码+讲解
这篇文章是Spring5框架的AOP切面编程教程,通过XML配置方式,详细讲解了如何创建被增强类和增强类,如何在Spring配置文件中定义切入点和切面,以及如何将增强逻辑应用到具体方法上。文章通过具体的代码示例和测试结果,展示了使用XML配置实现AOP的过程,并强调了虽然注解开发更为便捷,但掌握XML配置也是非常重要的。
Spring5入门到实战------11、使用XML方式实现AOP切面编程。具体代码+讲解