spring test + Junit方式:


pox.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<? xml  version = "1.0"  encoding = "UTF-8" ?>
< project  xmlns = "http://maven.apache.org/POM/4.0.0"
          xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation = "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" >
     < modelVersion >4.0.0</ modelVersion >
 
     < groupId >com.try2better</ groupId >
     < artifactId >spring</ artifactId >
     < version >1.0-SNAPSHOT</ version >
 
     < properties >
         < spring.version >4.3.9.RELEASE</ spring.version >
     </ properties >
 
     < dependencies >
 
         < dependency >
             < groupId >org.springframework</ groupId >
             < artifactId >spring-context</ artifactId >
             < version >${spring.version}</ version >
         </ dependency >
 
         < dependency >
             < groupId >org.springframework</ groupId >
             < artifactId >spring-aop</ artifactId >
             < version >${spring.version}</ version >
         </ dependency >
 
         < dependency >
             < groupId >org.springframework</ groupId >
             < artifactId >spring-core</ artifactId >
             < version >${spring.version}</ version >
         </ dependency >
 
         < dependency >
             < groupId >org.springframework</ groupId >
             < artifactId >spring-test</ artifactId >
             < version >${spring.version}</ version >
         </ dependency >
 
         <!-- https://mvnrepository.com/artifact/junit/junit -->
         < dependency >
             < groupId >junit</ groupId >
             < artifactId >junit</ artifactId >
             < version >4.12</ version >
             < scope >test</ scope >
         </ dependency >
 
         <!-- spring end -->
     </ dependencies >
</ project >

Java:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
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<String> list;
     private  Set<String> set;
     private  Map<String,Boss> 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<String> getList() {
         return  list;
     }
 
     public  void  setList(List<String> list) {
         this .list = list;
     }
 
     public  Set<String> getSet() {
         return  set;
     }
 
     public  void  setSet(Set<String> set) {
         this .set = set;
     }
 
     public  Map<String, Boss> getMap() {
         return  map;
     }
 
     public  void  setMap(Map<String, Boss> 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 +
                 '}' ;
     }
}

实体:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
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:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<? 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" >
 
     < import  resource = "bean.xml" />
 
     < bean  id = "boss"  class = "beans.Boss" >
         < property  name = "age"  value = "10" />
         < property  name = "male"  value = "false" />
         < property  name = "name"  value = "zhouhui" />
     </ bean >
 
     < bean  id = "boss2"  class = "beans.Boss"  scope = "singleton" >
         < constructor-arg  name = "age"  value = "11" />
         < constructor-arg  name = "name"  value = "zhouhui2" />
         < constructor-arg  name = "isMale"  value = "true" />
     </ bean >
 
     < bean  id = "boss3"  class = "beans.Boss" >
     </ bean >
 
     < bean  id = "bossService"  class = "impl.BossServiceImpl" >
         < property  name = "boss"  ref = "boss2" ></ property >
     </ bean >
 
</ beans >

bean xml:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
<? 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" >
 
     <!-- boss对象的bean -->
     < bean  id = "myBoss"  class = "beans.Boss" >
         < property  name = "age"  value = "10" />
         < property  name = "male"  value = "false" />
         < property  name = "name"  value = "zhouhui" />
     </ bean >
 
     < bean  id = "bean"  class = "beans.Bean" >
         <!-- private Boss boss; -->
         < property  name = "boss"  ref = "myBoss" />
 
         <!-- private Integer inte; -->
         < property  name = "inte"  value = "1" />
 
         <!-- private String str; -->
         < property  name = "str"  value = "hello world" />
 
         <!-- private String[] strArr; -->
         < property  name = "strArr" >
             < list >
                 < value >NO.1</ value >
                 < value >NO.2</ value >
                 < value >NO.3</ value >
             </ list >
         </ property >
 
         <!-- private List<String> list; -->
         < property  name = "list" >
             < list >
                 < value >INDEX 1</ value >
                 < value >INDEX 2</ value >
                 < value >INDEX 3</ value >
             </ list >
         </ property >
 
         <!-- private Map<String,Boss> map; -->
         < property  name = "map" >
             < map >
                 < entry  key = "entity 1"  value-ref = "myBoss" ></ entry >
                 < entry  key = "entity 2"  value-ref = "myBoss" ></ entry >
                 < entry  key = "entity 3"  value-ref = "myBoss" ></ entry >
             </ map >
         </ property >
 
         <!-- private Set<String> set; -->
         < property  name = "set" >
             < set >
                 < value >set 1</ value >
                 < value >set 2</ value >
                 < value >set 3</ value >
             </ set >
         </ property >
 
         <!-- private Properties properties; -->
         < property  name = "properties" >
             < props >
                 < prop  key = "key1" >value1</ prop >
                 < prop  key = "key2" >value2</ prop >
                 < prop  key = "key3" >value3</ prop >
             </ props >
         </ property >
     </ bean >
</ beans >

对于数组的注入,使用<list><value>NO.1</value><value>NO.2</value><value>NO.3</value></list> 和 <array> <value>NO.1</value><value>NO.2</value><value>NO.3</value></array>是等同的。


测试类:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
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.SpringJUnit4ClassRunner;
 
import  javax.annotation.Resource;
 
import  beans.Bean;
import  beans.Boss;
import  business.BossService;
 
/*
  * DESCRIPTION :
  * USER : zhouhui
  * DATE : 2017/8/10 11:25
  */
@RunWith(SpringJUnit4ClassRunner.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================" );
     }
}

执行结果:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
============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================