Spring框架bean的scope属性


		<!-- 先配置平台事务管理器 -->
	<bean id="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager">
		<property name="sessionFactory" ref="sessionFactory"/>
	</bean>
	
	<!-- 开启事务的注解 -->
	<tx:annotation-driven transaction-manager="transactionManager"/>
	
	<!-- 配置客户的模块  id属性如果和action层引入service层的属性名字一样的话,系统会自动注入  scope="prototype 表示多例,必须配置-->
	
	<bean id="userAction" class="com.sshweb.action.UserAction" scope="prototype">
		<property name="userService" ref="UserSerivceImpl"></property>
	</bean>
	
	<bean id="UserSerivceImpl" class="com.sshweb.service.UserSerivceImpl">
		<property name="userdao" ref="userDaoImpl"></property>
	</bean>
	
	<bean id="userDaoImpl" class="com.sshweb.dao.UserDaoImpl">
		<property name="sessionFactory" ref="sessionFactory"/>
	</bean>


scope属性默认的是singleton,单例的意思,但是如果spring整合struts2的时候,scope属性的值应该设置成scope="prototype",意思是非单例的意思。

单例的设计模式,要不非单例的设计模式性能强,节省内存,所以我们能设置成单例的模式,就尽量的设置成单例。-


为什么Struts2不能设计成单例的设计模式呢?

因为Struts2是用ognl值栈属性的方式来传递数据的,因为action传递的是属性,所以不能使用单例的设计模式。

例如:

同时有N个人登录同一个帐号,那么后面登录帐号的人就会把前面登录帐号的人所代替掉的。


scope的属性,除了单例(singleton)和非单例(prototype)的设计模式,还有其他三种设计模式,分别为:

request

session

global session

后面三种设计模式并不建议使用,容易产生混乱。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值