容器中Bean的作用域

通过Spring容器创建一个Bean实例时,不仅可以完成Bean实例的实例化,还可以为Bean指定特定的作用域。

Spring支持如下5种作用域:

 > singleton:单例模式,在整个Spring IoC 容器中,使用singleton定义的Bean将只有一个实例。不指定Bean的作用域时,Spring默认使用singleton作用域。

 > prototype:原型模式,每次通过容器的getBean方法获取prototype 定义的Bean时,都将产生一个新的Bean实例。

 > request:对于每次HTTP请求,使用request定义的Bean都将产生一个新实例,即每次HTTP请求将会产生不同的Bean实例。只有在Web应用中使用Spring时,该作用域才真正有效。

 > session:对于每次HTTP Session,使用session定义的Bean都将产生一个新实例,即每次HTTP Session都将会产生不同的Bean实例。只有在Web应用中使用Spring时,该作用域才真正有效。

 > global session:每个全局的HTTP Session对应一个Bean实例。典型情况下,仅在使用portlet context的时候有效。只有在Web应用中使用Spring时,该作用域才真正有效。


<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xmlns="http://www.springframework.org/schema/beans"
 xsi:schemaLocation="http://www.springframework.org/schema/beans 
 http://www.springframework.org/schema/beans/spring-beans-4.2.xsd"
>
	<!-- 配置一个singleton Bean实例 -->
	<bean id="p1" class="demo.PersonDemo"/>
	<!-- 配置一个prototype Bean实例 -->
	<bean id="p2" class="demo.PersonDemo" scope="prototype"/>

</beans>

package demo;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class ScopeTest {

	public static void main(String[] args) throws Exception {
		
		ApplicationContext ctx = new ClassPathXmlApplicationContext("bean.xml");
		
		System.out.println(ctx.getBean("p1")==ctx.getBean("p1"));
	
		System.out.println(ctx.getBean("p2")==ctx.getBean("p2"));
		
	}
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值