Spring的自动装配Bean的四种方式

Spring提供了四种自动装配的方式(Version 5.0.6.RELEASE),分别是:

  • no:(默认)无自动装配。 Bean引用必须通过ref元素定义。
  • byName:自动按属性名称进行调用。Spring寻找一个与需要自动调用的属性具有相同名称的bean。
  • byType:匹配属性类型进行装配。如果属性类型中的一个bean存在于容器中,则允许属性自动进行。如果数据类型是兼容的也会自动装配。

  • constructor:根据构造方法的数据类型,进行byType模式的自动装配。

使用自动装配,需要在<bean>定义autowire属性.


下面分别展示各种自动装配的实现:

Student.java:

package com.du.test2;

/**
 * Created with IDEA
 *
 * @author duzhentong
 * @Date 2018/6/4
 * @Time 11:32
 */
public class Student {

    public void say() {
        System.out.println("Student say!");
    }
}

User.java:

package com.du.test2;

/**
 * Created with IDEA
 *
 * @author duzhentong
 * @Date 2018/6/4
 * @Time 10:54
 */
public class User {
    private Student student;

    public User(Student student) {
        this.student = student;
    }

    public User() {

    }

    public void setStudent(Student student) {
        this.student = student;
    }

    public void say() {
        student.say();
    }
}

Spring配置文件spring2.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"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xsi:schemaLocation="
        http://www.springframework.org/schema/beans 
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/aop 
        http://www.springframework.org/schema/aop/spring-aop.xsd">

    <bean id="student" class="com.du.test2.Student"/>
    <!--根据属性名字实现自动装配 byName-->
    <bean id="user1" class="com.du.test2.User" autowire="byName"/>

    <!--根据属性类型实现自动装配 byType-->
    <bean id="user2" class="com.du.test2.User" autowire="byType"/>

    <!--根据构造方法现自动装配-->
    <bean id="user3" class="com.du.test2.User" autowire="constructor"/>

    <bean id="user4" class="com.du.test2.User" autowire="no">
        <constructor-arg>
            <ref bean="student"/>
        </constructor-arg>
    </bean>

</beans>

测试类Application.java:

package com.du.test2;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
 * Created with IDEA
 *
 * bean的自动装配
 *
 * @author duzhentong
 * @Date 2018/6/4
 * @Time 10:58
 */
public class Application {
    public static void main(String[] args) {
        ApplicationContext ac = new ClassPathXmlApplicationContext("spring2.xml");
        User user1 = (User)ac.getBean("user1");
        User user2 = (User)ac.getBean("user2");
        User user3 = (User)ac.getBean("user3");
        User user4 = (User)ac.getBean("user4");
        user1.say();
        user2.say();
        user3.say();
        user4.say();
    }
}

输出:

Student say!
Student say!
Student say!
Student say

猜你喜欢

转载自blog.csdn.net/qq_38663729/article/details/80569321