1。关于在struts+hibernate+spring整合的过程中事务异常的处理:
我们都知道spring的异常都为RuntimeException,这种异常是不用捕捉的,但因为直接把系统的异常抛给用户界面又不合理,所以需要对spring的异常进行处理。我的处理方法是,在service层不捕捉,如果运行正常返回success信息,如果运行不正常在action通过try{}catch(Exception e){}来捕捉,在这个catch模块进行我们的异常显示处理,定义一个String message,并给message以异常信息,如:**重名,操作失败什么的。为了我们开发人员可以看到原始异常,在message=""之后加上e.printStackTrace();当然这个信息也可以传到页面,通过隐藏的形式处理,可以加一个按钮来动态显示这个原始异常。
2。spring的事务控制,在spring的配制文件中配
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory" /> </bean> <!-- 配置事务拦截器Bean --> <bean id="transactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor"> <property name="transactionManager" ref="transactionManager"/> <property name="transactionAttributes"> <props> <prop key="get*">PROPAGATION_REQUIRED,readOnly</prop> <prop key="find*">PROPAGATION_REQUIRED,readOnly</prop> <prop key="load*">PROPAGATION_REQUIRED,readOnly</prop> <prop key="save*">PROPAGATION_REQUIRED</prop> <prop key="add*">PROPAGATION_REQUIRED</prop> <prop key="update*">PROPAGATION_REQUIRED</prop> <prop key="remove*">PROPAGATION_REQUIRED</prop> </props> </property> </bean> <bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator"> <property name="beanNames"> <list> <value>systemServiceTarget</value> </list> </property> <property name="interceptorNames"> <list> <value>transactionInterceptor</value> </list> </property> </bean>