前言
本章节讲解spring里如何注入集合,以及spring bean的作用域
1、注入
1.1、注入集合
标签 | 说明 |
<list> | 用于注入 list 类型的值,允许重复 |
<set> | 用于注入 set 类型的值,不允许重复 |
<map> | 用于注入 key-value 的集合,其中 key 和 value 都可以是任意类型 |
<props> | 用于注入 key-value 的集合,其中 key 和 value 都是字符串类型 |
import java.util.Arrays; import java.util.List; import java.util.Map; import java.util.Set; /** * 集合注入 */ public class CollectionDI { /** * 数组注入 */ private String[] permissions; /** * list注入 */ private List<String> student; /** * map注入 */ private Map<String,String> maps; /** * Set注入 */ private Set<String> cities; public String[] getPermissions() { return permissions; } public void setPermissions(String[] permissions) { this.permissions = permissions; } public List<String> getStudent() { return student; } public void setStudent(List<String> student) { this.student = student; } public Map<String, String> getMaps() { return maps; } public void setMaps(Map<String, String> maps) { this.maps = maps; } public Set<String> getCities() { return cities; } public void setCities(Set<String> cities) { this.cities = cities; } @Override public String toString() { return "CollectionDI{" + "permissions=" + Arrays.toString(permissions) + ", student=" + student + ", maps=" + maps + ", cities=" + cities + '}'; } }
<?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-3.0.xsd"> <bean id="collectionDI" class="com.xxx.spring.bean.CollectionDI"> <property name="permissions"> <array> <value>新闻管理</value> <value>系统管理</value> </array> </property> <property name="student"> <list> <value>张三</value> <value>李四</value> </list> </property> <property name="maps"> <map> <entry key="1" value="军事"/> <entry key="2" value="时事"/> </map> </property> <property name="cities"> <set> <value>北京</value> <value>上海</value> <value>深圳</value> <value>广州</value> </set> </property> </bean> </beans>
集合对象为某个类型,则可用 <ref bean="xxxx”/>或者
<list> <bean class="xxx"> <!--设置bean的属性--> </bean> </list>
1.2、其他注入
1.2.1、注入null或者空串
<!--使用null 标签注入 Null 值--> <property name="propertyNull"> <null/> </property> <!--使用空参数注入空字符串--> <property name="propertyEmpty" value=""></property>
1.2.2、注入字面量
<!--通过转义注入包含特殊符号的字面量--> <property name="propertyLiteral" value="<Java从入门到精通>"> </property>
1.2.3、使用短字符串 <![CDATA[]]>
<!--使用 <![CDATA[]]> 将包含特殊符号的字面量注入--> <property name="propertyLiteral"> <value><![CDATA[<www.baidu.com>]]></value> </property>
1.2.4、级联属性赋值
在 <bean> 的 <property> 子元素中,为它所依赖的 Bean 的属性进行赋值,这就是所谓的“级联属性赋值”
使用级联属性赋值时,需要注意以下 3点:
- Java 类中必须有 setter 方法;
- Java 类中必须有无参构造器(默认存在);
- 依赖其他 Bean 的类中,必须提供一个它依赖的 Bean 的 getXxx() 方法
<property name="dependBean.dependProperty" value="级联属性赋值"> </property> <bean id="dependBean" class="com.xxx.spring.bean.DependBean"> <!--对属性进行赋值--> <property name="dependProperty" value=""> </property> </bean>