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 超越巔峰 閱讀(3949) 評論(1)  編輯  收藏 所屬分類: Java EE

          評論

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

          good!!!  回復(fù)  更多評論   

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(12)

          隨筆分類(54)

          隨筆檔案(59)

          文章分類(2)

          文章檔案(1)

          相冊

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 红安县| 门头沟区| 庆阳市| 庆元县| 镇雄县| 秭归县| 师宗县| 乐山市| 芦溪县| 临泽县| 南宫市| 新巴尔虎左旗| 邵阳市| 辛集市| 左云县| 开平市| 惠州市| 绵阳市| 莱芜市| 茶陵县| 丰城市| 集贤县| 河东区| 疏勒县| 金沙县| 涟水县| 吴江市| 天水市| 大英县| 嫩江县| 云安县| 安国市| 新余市| 托克逊县| 开平市| 永靖县| 高雄县| 康定县| 江安县| 石泉县| 大连市|