Spring容器中Bean的作用域
当Spring容器创建一个Bean实例的时候,不仅可以完成Bean实例的实例化,而且会指定他的作用域。Spring支持以下几种作用域。
1. singleton:单例模式。Spring的容器中只生产一个这样的实例,调用的时候,从Spring的容器中取出即可。
2. prototype:相当于多例,每次获取Bean的时候都会创建一个新的对象的实例。
3. request:对于一次Http请求的话,request作用域的Bean将只生产一个实例,不同的Http请求产生的实例是不同的。
4. session:对于一次Http请求,Session作用域的Bean只产生一个。
5. global session :每个全局的Http Session对应一个Bean实例。
集合类型的属性如何配置
一般的在开发的时候通常情况下会选择使用自动扫描机制加注解的方式,以下的例子可以了解下怎么配置即可。
package com.siti.spring20160229;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
public class Person {
private List<String> addresses;
private Map scores;
private Map<String, WangYang> people;
private Properties health;
private Set wangyangs;
private String[] books;
public List<String> getAddresses() {
return addresses;
}
public void setAddresses(List<String> addresses) {
this.addresses = addresses;
}
public Map getScores() {
return scores;
}
public void setScores(Map scores) {
this.scores = scores;
}
public Map<String, WangYang> getPeople() {
return people;
}
public void setPeople(Map<String, WangYang> people) {
this.people = people;
}
public Properties getHealth() {
return health;
}
public void setHealth(Properties health) {
this.health = health;
}
public Set getWangyangs() {
return wangyangs;
}
public void setWangyangs(Set wangyangs) {
this.wangyangs = wangyangs;
}
public String[] getBooks() {
return books;
}
public void setBooks(String[] books) {
this.books = books;
}
}
下面是配置文件,注意一下,各个集合类型的数据是怎么配置的。
<?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">
<!-- bean definitions here -->
<bean id = "wy" class="com.siti.spring20160229.WangYang"></bean>
<bean id = "yy" class="com.siti.spring20160229.Wy"></bean>
<bean id = "person" class = "com.siti.spring20160229.Person">
<!-- 针对 private List<String> addresses; -->
<property name="addresses">
<list>
<value>上海</value>
<value>北京</value>
<value>山东</value>
</list>
</property>
<!-- 对于private Map scores; -->
<property name="scores">
<map>
<entry key = "数学" value = "80"></entry>
<entry key = "英语" value = "80"></entry>
<entry key = "语文" value = "80"></entry>
</map>
</property>
<!-- 对于Map<String, WangYang> people; -->
<property name="people">
<map>
<entry key="wy" value-ref="wy"></entry>
<entry key="yy" value-ref="yy"></entry>
</map>
</property>
<!-- 对于Properties health; -->
<property name="health">
<props>
<prop key="视力">5.0</prop>
<prop key="体重">65.0</prop>
</props>
</property>
<!-- 对于private Set wangyangs; -->
<property name="wangyangs">
<set>
<!-- set集合中的数据 -->
<value>wy</value>
<value>wy</value>
<value>wy</value>
</set>
</property>
<!-- String[] books -->
<property name="books">
<list>
<value>java</value>
<value>c</value>
<value>php</value>
</list>
</property>
</bean>
</beans>