J2EE之巔

           

          Spring2 AOP在使用XML配置時如何獲得target及JoinPoint

          蔡超

          SCEA MCSD IBM RUP Specialist

          Spring Reference 中介紹如何在采用 @AspectJ 方式在剖面中如何獲取 target JoinPoint 并給出了示例,但并沒有給出采用 XML 配置方式時介紹及示例,下面附上一個簡單的小例子供大家參考。

          package aop;

          ?

          import org.aspectj.lang.JoinPoint;

          import org.aspectj.lang.ProceedingJoinPoint;

          ?

          /**

          ?* @author Administrator

          ?*

          ?* TODO To change the template for this generated type comment go to

          ?* Window - Preferences - Java - Code Style - Code Templates

          ?*/

          public class LogAdvice1 {

          ?????? public void log(JoinPoint jp,MathImp imp){

          ?

          ????????????? System.out.println("log:"+imp+" "+jp.toLongString());

          ?????????????

          ?????? }

          }

          ?

          /*

          ?* Created on 2006-11-1

          ?*

          ?* TODO To change the template for this generated file go to

          ?* Window - Preferences - Java - Code Style - Code Templates

          ?*/

          package aop;

          ?

          /**

          ?* @author Administrator

          ?*

          ?* TODO To change the template for this generated type comment go to

          ?* Window - Preferences - Java - Code Style - Code Templates

          ?*/

          public class MathImp /*implements Math*/{

          ?

          ?????? /* (non-Javadoc)

          ?????? ?* @see aop.Math#add(int, int)

          ?????? ? */

          ?????? public void add(int op1, int op2) {

          ????????????? // TODO Auto-generated method stub

          ?????????????

          ?????? }

          ?

          ?????? /* (non-Javadoc)

          ?????? ?* @see aop.Math#addtest(int, int)

          ?????? ?*/

          ?????? public void addtest(int op1, int op2) {

          ????????????? // TODO Auto-generated method stub

          ?????????????

          ?????? }

          ?

          ?????? /* (non-Javadoc)

          ?????? ?* @see aop.Math#sub(int, int)

          ?????? ? */

          ?????? public void sub(int op1, int op2) {

          ????????????? // TODO Auto-generated method stub

          ?????????????

          ?????? }

          ?

          }

          ?

          配置:

          <beans xmlns="http://www.springframework.org/schema/beans"

          ????? xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

          ????? xmlns:aop="http://www.springframework.org/schema/aop"

          ????? xsi:schemaLocation="

          http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd

          http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd">

          ?

          ?? <!-- this is the object that will be proxied by Spring's AOP infrastructure -->

          ?? <bean id="mathImp" class="aop.MathImp"/>

          ?

          ?? <!-- this is the actual advice itself -->

          ?? <bean id="logger" class="aop.LogAdvice1"/>

          ?

          ?? <aop:config>

          ????? <aop:aspect ref="logger">

          ?

          ???????? <aop:pointcut id="addLog"

          ??????????????????? expression="execution(* aop.MathImp.*(..)) and target(imp) and JoinPoint(jp)"? />

          ?

          ???????? <aop:before pointcut-ref="addLog"

          ????????????????? method="log" arg-names="jp,imp" />

          ?

          ????? </aop:aspect>

          ?? </aop:config>

          ?

          </beans>

          測試

          package aop;

          ?

          import org.springframework.context.support.AbstractApplicationContext;

          import org.springframework.context.support.FileSystemXmlApplicationContext;

          ?

          /**

          ?* @author Administrator

          ?*

          ?* TODO To change the template for this generated type comment go to

          ?* Window - Preferences - Java - Code Style - Code Templates

          ?*/

          public class Test {

          ?

          ?????? public static void main(String[] args) {

          ????????????? AbstractApplicationContext context=new FileSystemXmlApplicationContext("aop2.xml");

          ????????????? //Math math=(Math) context.getBean("math");

          ????????????? MathImp math=(MathImp) context.getBean("mathImp");

          ????????????? math.add(1,2);

          ????????????? math.addtest(3,4);

          ????????????? math.sub(5,6);

          ?????? }

          }

          posted on 2007-02-26 17:57 超越巔峰 閱讀(3950) 評論(1)  編輯  收藏 所屬分類: Java EE

          評論

          # re: Spring2 AOP在使用XML配置時如何獲得target及JoinPoint 2007-03-30 18:45 itspy

          good!!!  回復  更多評論   

          導航

          統計

          常用鏈接

          留言簿(12)

          隨筆分類(54)

          隨筆檔案(59)

          文章分類(2)

          文章檔案(1)

          相冊

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 嫩江县| 宾川县| 彝良县| 亳州市| 德清县| 朝阳市| 永平县| 封丘县| 沙湾县| 宜兴市| 新邵县| 曲麻莱县| 黑河市| 怀仁县| 怀宁县| 泰顺县| 阿尔山市| 土默特右旗| 靖安县| 肥东县| 怀安县| 宜兰市| 城口县| 确山县| 阿巴嘎旗| 昌黎县| 汝城县| 静海县| 平乐县| 岚皋县| 枣庄市| 荃湾区| 鄱阳县| 黄陵县| 上饶市| 永修县| 宜丰县| 湘乡市| 西林县| 忻城县| 讷河市|