快速业务通道

Spring事务管理高级应用难点剖析: 第2部分 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-13
);   }   //③ static是类级别的方法,无法被子类覆盖   public static  void method3() {     System.out.println("method3");   }  //④ public方法可以被子类覆盖,因此可以被动态字节码增强     public void method4() {     System.out.println("method4");   } }

Spring事务管理高级应用难点剖析: 第2部分(5)

时间:2012-04-26 IBM 陈雄华

Spring 通过 CGLib 动态代理技术对 UserService Bean 实施 AOP 事 务增强的配置如下所示:

清单 7.applicationContext.xml:对 UserService 用 CGLib 实施事务增强

<?xml version="1.0" encoding="UTF-8" ?> <beans xmlns="http://www.springframework.org/schema/beans"    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xmlns:context="http://www.springframework.org/schema/context"    xmlns:p="http://www.springframework.org/schema/p"   xmlns:aop="http://www.springframework.org/schema/aop"    xmlns:tx="http://www.springframework.org/schema/tx"    xsi:schemaLocation="http://www.springframework.org/schema/beans      http://www.springframework.org/schema/beans/spring-beans-3.0.xsd      http://www.springframework.org/schema/context     http://www.springframework.org/schema/context/spring-context-3.0.xsd   http://www.springframework.org/schema/aop   http://www.springframework.org/schema/aop/spring-aop-3.0.xsd   http://www.springframework.org/schema/tx    http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">    <!-- 省略声明数据源及DataSourceTransactionManager事务管理器-->    …   <aop:config proxy-target-class="true">    <!--  ①显式使用CGLib动态代理 -->     <!-- ②希望对UserService所有方法 实施事务增强 -->     <aop:pointcut id="serviceJdbcMethod"        expression="execution(* user.special.UserService.*(..))"/>      <aop:advisor pointcut-ref="serviceJdbcMethod"       advice- ref="jdbcAdvice" order="0"/>   </aop:config>    <tx:advice id="jdbcAdvice" transaction-manager="jdbcManager">      <tx:attributes>       <tx:method name="*"/>      </tx:attributes>   </tx:advice> </beans>

在 ① 处,我们通过 proxy-target-class="true"显式使用 CGLib 动态代理技术,在 ② 处通过 AspjectJ 切点表达式表达 UserService 所有的方法,希 望对 UserService 所有方法都实施 Spring AOP 事务增强。

在 UserService 添加一个 可执行的方法,如下所示:

清单 8.UserService.java 添加 main 方法

package user.special; import  org.springframework.context.ApplicationContext; import  org.springframework.context.support.ClassPathXmlApplicationContext; import  org.springframework.stereotype.Service; @Service("userService") public class UserService {   …   public static void  main(String[] args) {     Application

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号