ASP.NET MVC3 中整合 NHibernate3.3、Spring.NET2.0 使用AOP执行事务处理
方法1 <object id="ServiceOperation" type="Spring.Aop.Support.SdkRegularExpressionMethodPointcut, Spring.Aop"> <property name="patterns"> <list> <value>LMJ.Service.AdminService.UpdateAdmin</value> </list> </property> </object> <tx:advice id="txAdvice" transaction-manager="HibernateTransactionManager"> <tx:attributes> <tx:method name="*" rollback-for="errorException" isolation="ReadCommitted" timeout="60"/> </tx:attributes> </tx:advice> <aop:config> <aop:advisor advice-ref="txAdvice" pointcut-ref="ServiceOperation" /> </aop:config>
方法2 <object id="aroundAdvisor" type="Spring.Aop.Support.RegularExpressionMethodPointcutAdvisor, Spring.Aop"> <property name="advice" ref="txAdvice"/> <property name="patterns"> <list> <value>LMJ.Service.AdminService.UpdateAdmin</value> </list> </property> </object> <object id="ProxyCreator" type="Spring.Aop.Framework.AutoProxy.DefaultAdvisorAutoProxyCreator, Spring.Aop"/> <tx:advice id="txAdvice" transaction-manager="HibernateTransactionManager"> <tx:attributes> <tx:method name="*" rollback-for="errorException" isolation="ReadCommitted" timeout="60"/> </tx:attributes> </tx:advice>
方法3 <object id="ProxyCreator" type="Spring.Aop.Framework.AutoProxy.ObjectNameAutoProxyCreator, Spring.Aop"> <property name="ObjectNames"> <list> <value>*Service</value> </list> </property> <property name="InterceptorNames"> <list> <value>txAdvice</value> </list> </property> </object> <tx:advice id="txAdvice" transaction-manager="HibernateTransactionManager"> <tx:attributes> <tx:method name="*" rollback-for="errorException" isolation="ReadCommitted" timeout="60"/> </tx:attributes> </tx:advice>
如果需要筛选方法,这样配置:
方法3-2 <object id="ProxyCreator" type="Spring.Aop.Framework.AutoProxy.ObjectNameAutoProxyCreator, Spring.Aop"> <property name="ObjectNames"> <list> <value>*Service</value> </list> </property> <property name="InterceptorNames"> <list> <value>aroundAdvisor</value> </list> </property> </object> <object id="aroundAdvisor" type="Spring.Aop.Support.NameMatchMethodPointcutAdvisor, Spring.Aop"> <property name="Advice" ref="txAdvice"/> <property name="MappedNames"> <list> <value>UpdateAdmin</value> </list> </property> </object> <tx:advice id="txAdvice" transaction-manager="HibernateTransactionManager"> <tx:attributes> <tx:method name="*" rollback-for="errorException" isolation="ReadCommitted" timeout="60"/> </tx:attributes> </tx:advice>
方法4 <object type="Spring.Aop.Framework.AutoProxy.ObjectNameAutoProxyCreator,Spring.Aop"> <property name="ObjectNames"> <list> <value>*Service</value> </list> </property> <property name="InterceptorNames"> <list> <value>transactionInterceptorName</value> </list> </property> </object> <!--拦截器,定义事务策略--> <object id="transactionInterceptorName" type="Spring.Transaction.Interceptor.TransactionInterceptor,Spring.Data"> <property name="TransactionAttributes"> <name-values> <add key="UpdateAdmin" value="PROPAGATION_REQUIRED"/> </name-values> </property> <property name="TransactionManager"> <ref local="HibernateTransactionManager" /> </property> </object>
方法5 <object type="Spring.Aop.Framework.AutoProxy.TypeNameAutoProxyCreator,Spring.Aop"> <property name="TypeNames"> <list> <value>LMJ.Service.AdminService</value> </list> </property> <property name="InterceptorNames"> <list> <value>transactionInterceptorName</value> </list> </property> </object> <object id="transactionInterceptorName" type="Spring.Transaction.Interceptor.TransactionInterceptor,Spring.Data"> <property name="TransactionAttributes"> <name-values> <add key="UpdateAdmin" value="PROPAGATION_REQUIRED"/> </name-values> </property> <property name="TransactionManager"> <ref local="HibernateTransactionManager" /> </property> </object>
联盟快卖 商人,生意人,待创业人士在此可以共赢互利 期待你的加入 群号:140809277
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗