spring test + Junit方式:


pox.xml


    4.0.0

    com.try2better
    spring
    1.0-SNAPSHOT

    
        4.3.9.RELEASE
    

    

        
            org.springframework
            spring-context
            ${spring.version}
        

        
            org.springframework
            spring-aop
            ${spring.version}
        

        
            org.springframework
            spring-core
            ${spring.version}
        

        
            org.springframework
            spring-test
            ${spring.version}
        

        
        
            junit
            junit
            4.12
            test
        

        
    

Java:

package beans;

import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Set;

/*
 * DESCRIPTION : 
 * USER : zhouhui
 * DATE : 2017/8/10 15:49
 */
public class Bean {

    private Integer inte;
    private String str;
    private String[] strArr;
    private Boss boss;
    private List list;
    private Set set;
    private Map map;
    //Properties和Map的区别是,Properties只能接受key和value都是String
    private Properties properties;

    public Integer getInte() {
        return inte;
    }

    public void setInte(Integer inte) {
        this.inte = inte;
    }

    public String getStr() {
        return str;
    }

    public void setStr(String str) {
        this.str = str;
    }

    public String[] getStrArr() {
        return strArr;
    }

    public void setStrArr(String[] strArr) {
        this.strArr = strArr;
    }

    public Boss getBoss() {
        return boss;
    }

    public void setBoss(Boss boss) {
        this.boss = boss;
    }

    public List getList() {
        return list;
    }

    public void setList(List list) {
        this.list = list;
    }

    public Set getSet() {
        return set;
    }

    public void setSet(Set set) {
        this.set = set;
    }

    public Map getMap() {
        return map;
    }

    public void setMap(Map map) {
        this.map = map;
    }

    public Properties getProperties() {
        return properties;
    }

    public void setProperties(Properties properties) {
        this.properties = properties;
    }

    @Override
    public String toString() {
        return "Bean{" +
                "inte=" + inte +
                ", str='" + str + '\'' +
                ", strArr=" + Arrays.toString(strArr) +
                ", boss=" + boss +
                ", list=" + list +
                ", set=" + set +
                ", map=" + map +
                ", properties=" + properties +
                '}';
    }
}

实体:

package beans;

/*
 * DESCRIPTION : 
 * USER : zhouhui
 * DATE : 2017/8/10 11:19
 */
public class Boss {

    private String name;
    private Integer age;
    private Boolean isMale;

    public Boss() {
    }

    public Boss(String name, Integer age, Boolean isMale) {
        this.name = name;
        this.age = age;
        this.isMale = isMale;
    }

    public String getName() {
        return name;
    }

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

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public Boolean getMale() {
        return isMale;
    }

    public void setMale(Boolean male) {
        isMale = male;
    }

    @Override
    public String toString() {
        return "Boss{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", isMale=" + isMale +
                '}';
    }
}

spring xml:



    

    
        
        
        
    

    
        
        
        
    

    
    

    
        
    

bean xml:



    
    
        
        
        
    

    
        
        

        
        

        
        

        
        
            
                NO.1
                NO.2
                NO.3
            
        

        
        
            
                INDEX 1
                INDEX 2
                INDEX 3
            
        

        
        
            
                
                
                
            
        

        
        
            
                set 1
                set 2
                set 3
            
        

        
        
            
                value1
                value2
                value3
            
        
    

对于数组的注入,使用NO.1NO.2NO.3 NO.1NO.2NO.3是等同的。


测试类:

package test;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4Cla***unner;

import javax.annotation.Resource;

import beans.Bean;
import beans.Boss;
import business.BossService;

/*
 * DESCRIPTION :
 * USER : zhouhui
 * DATE : 2017/8/10 11:25
 */
@RunWith(SpringJUnit4Cla***unner.class)
@ContextConfiguration(locations = { "classpath*:spring-content.xml" })
public class TestSpringBeans {

    @Resource(name = "boss3")
    private Boss boss;
    @Autowired
    private Boss boss2;
    @Autowired
    private Boss boss3;

    @Autowired
    private BossService bossService;
    @Autowired
    private Bean bean;

    /**
     * @Autowired 是根据bean的id,完全匹配注入
     * @Resource(name = "boss3") 指定nid匹配注入
     */
    @org.junit.Test
    public void test(){
        System.out.println("============test===============");
        System.out.println(boss.toString());
        System.out.println(boss2.toString());
        System.out.println(boss3.toString());
        //默认是单例的,如果需要是多例的需要设置scope="singleton"
        System.out.println(boss == boss2);
        System.out.println("=============test==============");
    }

    /**
     * 测试接口的注入,必须在xml种指定实现,不然Java中不予许对interface进行@Autowired
     */
    @Test
    public void testInterface(){
        System.out.println("============testInterface===============");
        System.out.println(bossService.getBossEntity());
        System.out.println("============testInterface===============");
    }

    /**
     * 对数组 集合等各种类型的属性进行注入
     */
    @Test
    public void testBean(){
        System.out.println("===========testBean================");
        System.out.println(bean);
        System.out.println("===========testBean================");
    }
}

执行结果:

============test===============
Boss{name='null', age=null, isMale=null}
Boss{name='zhouhui2', age=11, isMale=true}
Boss{name='null', age=null, isMale=null}
false
=============test==============

============testInterface===============
Boss{name='zhouhui2', age=11, isMale=true}
============testInterface===============

===========testBean================
Bean{inte=1, str='hello world', strArr=[NO.1, NO.2, NO.3], boss=Boss{name='zhouhui', age=10, isMale=false}, list=[INDEX 1, INDEX 2, INDEX 3], set=[set 1, set 2, set 3], map={entity 1=Boss{name='zhouhui', age=10, isMale=false}, entity 2=Boss{name='zhouhui', age=10, isMale=false}, entity 3=Boss{name='zhouhui', age=10, isMale=false}}, properties={key3=value3, key2=value2, key1=value1}}
===========testBean================