您的位置:首页 > 编程语言 > Java开发

spring各种类型的属性注入

2017-08-10 17:26 369 查看
spring test + Junit方式:

pox.xml
<?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:
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 +
'}';
}
}
实体:
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:
<?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:
<?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>是等同的。

测试类:
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================");
}
}
执行结果:
============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================
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息