Spring初学(二)Scope和set等的注入

Bean  Scopes

Scope在web开发中只文档使用的范围,在Spring中它依然是表示范围的。Bean的一个属性,只Bean的范围。

Scope解释
singleton单例模式,每次取到的bean都是同一个(默认情况是这个)
prototypePrototype:每次拿到的都是一个新的对象。
request几乎不用
session几乎不用
global session几乎不用

 

一、当Scope为“默认或者是singleton”的时候,修改beans.xml文件:(第一节中的beans.xml中修改)

  

  	<bean id="userService" class="com.xxx.service.UserService" scope="singleton">
  		<property name="userDAO" ref="userDAO" />		
  	</bean> 


在测试类中查看:

	.....
	UserService service = (UserService)applicationContext.getBean("userService");
  	UserService service2 = (UserService)applicationContext.getBean("userService");
  
 	 System.out.println(service == service2);
	.....


输出结果:

2014-2-20 15:21:47 org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons
信息: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@1c92535: defining beans [userDAO,userService]; root of factory hierarchy
true
user succeed add!

 

二、当Scope为“prototype”,同上面一样,可以得出结果:

2014-2-20 15:28:02 org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons
信息: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@12a3793: defining beans [userDAO,userService]; root of factory hierarchy
false
user succeed add!
 

也就可以得出,当scope为默认或者singleton时,不管取多少次都是一样的。当Scope取prototype时,总是取到新的。当为Action的时候,推荐使用Prototype。

 


合注入:

假如UserDAO里面有

private  Set<String>  sets;

private  List<String>  lists;

private  Map<String, String > maps;

....

等更多的集合,并且拥有它们各自的Setter方法,我们现在需要在beans.xml文件中配置:

...

<property name = "sets">
 <set>
  <value>1</value>
  <value>2</value>
 </set>
</property>
<property name="lists">
 ...
</property>
<property name="maps">
 ...
</property>

...


 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值