首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 互联网 >

AOP学习小结

2012-07-22 
AOP学习总结一:配置文件配置分析如下:?xml version1.0 encodingUTF-8?beans xmlnshttp://www.s

AOP学习总结

一:配置文件配置分析如下:
   <?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: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">

<bean id="cc" method="xxx"/>中pointcut-ref的名称。
       方法名与括号间加*表示以"test1"开头的方法。
  -->
         <aop:pointcut id="myMethod"
                    expression="execution(* cn.javass.aop.MyTarget.test1*())"/>

         <!-- 按下面配置中的before,around,after决定把我们追加的功能追加到原有方法的前面或后面,
              我们追加功能的方法的方法名在method="方法名"中配置。配置为aop:around时,需要在程序中
              用call.proceed()调用一下。
-->
         <aop:around pointcut-ref="myMethod" method="cc"/>

      </aop:aspect>
   </aop:config>

</beans>


二:我们追加功能的类写法
   package cn.java.aop;

   import org.aspectj.lang.ProceedingJoinPoint;

   public class MyAdvice {
/*
* 本类是追加功能的类,执行本类的方法时,把功能按配置中的before,around,after分别追加到
* 原来方法的不同位置(前面或后面)
*/
public Object cc(ProceedingJoinPoint call) throws Throwable {

     System.out.println("111111111111111111111111");
     /*
      * 使用配置为around要在程序中写call.proceed(),如果不写,
      * 监控到要修改的方法后,会被我们的方法全部替代,不执行原有的方法。
      */
     call.proceed();
     System.out.println("2222222222222222222222222");
     return null;
   }

   }

三:目标对象(包含连接点,即我们要监控的方法的类)的写法。
   package cn.java.aop;

   public class MyTarget {

/*
* 本类为目标对象,就是程序原有的类和实现功能的方法。
*/
public void test1(){
System.out.println("now is test1================>");
}
public void test2(){
System.out.println("now is test2================>");
}
public void test3(){
System.out.println("now is test3================>");
}
  }

四:客户端写法:
   package cn.java.aop;

   import org.springframework.context.ApplicationContext;
   import org.springframework.context.support.ClassPathXmlApplicationContext;

   public class Client {
/*
* 本类为客户端,是Spring的入口点。
*/
public static void main(String[] args){
ApplicationContext context = new ClassPathXmlApplicationContext(
new String[]{"applicationContext.xml"});

MyTarget t = (MyTarget)context.getBean("bb");
t.test1();
}
   }

热点排行