4、spring自动装配(spring笔记)

一、根据名称自动装配属性(工程spring_autowire_byName

这种方式一般用在开发阶段,用于提供我们的开发效率。我们通过一个示例进行说明。
相关实体:
Bean2.java

private Bean3 bean3;
private Bean4 bean4;
private Bean5 bean5;

Bean3.java

private int id;
private String name;
private String password;

Bean4.java

private int id;
private String name;

Bean5.java

private int age;

配置:applicationContext-beans.xml





    
    
    

    
        
    

applicationContext-other.xml




   
   
        
        
            
   
   
        
        
           
   
   

说明:这里我们之所以可以这样简单的配置Bean2类,是因为我们在Bean2类中的属性名字和Bean3、Bean4、Bean5这些类中配置的id号是名字是一样的,同时提供了getter和setter方法,这样spring就会根据这个名字去找相应的类,然后实例化之后注入进来,当然这样配置之后是不会生效的,我们需要在标签中配置default-autowire="byName"。这种方式一般用在开发阶段,在项目发布时不推荐这样做,因为在配置文件中看不到一个bean的属性,不利于维护,一般在开发完之后再改成一般方式。

测试:AutowireTest.java

package com.bjsxt.spring;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import junit.framework.TestCase;

public class AutowireTest extends TestCase {
    
    private BeanFactory factory;
    
    @Override
    protected void setUp() throws Exception {
        factory = new ClassPathXmlApplicationContext("applicationContext-*.xml");   
    }

    public void testAutowire() {
        Bean2 bean2 = (Bean2)factory.getBean("bean2");
        System.out.println("bean2.bean3.id=" + bean2.getBean3().getId());
        System.out.println("bean2.bean3.name=" + bean2.getBean3().getName());
        System.out.println("bean2.bean3.password=" + bean2.getBean3().getPassword());
        System.out.println("bean2.bean4.id=" + bean2.getBean4().getId());
        System.out.println("bean2.bean4.name=" + bean2.getBean4().getName());
        System.out.println("bean2.bean5.age=" + bean2.getBean5().getAge());
    }
    
}

二、根据类型自动装配(工程spring_autowrire_byType

这里所有的类和配置都和上面一样,但是在标签中配置default-autowire="byType",此时spring会根据各个类的实际类型去找相关的实体类,id可以随便起名或者忽略。我们推荐使用这种方式进行配置。

你可能感兴趣的:(4、spring自动装配(spring笔记))