<!-- 先配置平台事务管理器 -->
<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
后面三种设计模式并不建议使用,容易产生混乱。