zoukankan      html  css  js  c++  java
  • 面向切面编程AOP:基于XML文件的配置

    除了使用AspectJ注解声明切面,Spring也支持在bean的配置文件中声明切面,这种声明是通过aop scheme中的XML元素完成的。

    首先建立一个类:

    package com.sevenhu.AOPTests;
    
    import org.aspectj.lang.JoinPoint;
    import org.aspectj.lang.annotation.Before;
    
    import java.util.Arrays;
    
    /**
     * Created by hu on 2016/4/1.
     */
    public class AspectDemo1 {
        //前置通知
        @Before("execution(public int com.sevenhu.AOPTests.Calculator.*(int ,int ))")
        public void beforeMethod(JoinPoint joinPoint){
            String methodName=joinPoint.getSignature().getName();
            Object[] args=joinPoint.getArgs();
            System.out.println("The method "+methodName+" begins with "+ Arrays.asList(args));
        }
    }
    

    配置如下:

           <!--使AspesctJ的注解起作用-->
           <aop:aspectj-autoproxy></aop:aspectj-autoproxy>
           <bean id="aspectDemo1" class="com.sevenhu.AOPTests.AspectDemo1"></bean>
           <aop:config>
                  <aop:aspect id="aspect1" ref="aspectDemo1"></aop:aspect>
           </aop:config>
    

    基于XML声明切入点:

           <!--使AspesctJ的注解起作用-->
           <aop:aspectj-autoproxy></aop:aspectj-autoproxy>
           <bean id="aspectDemo1" class="com.sevenhu.AOPTests.AspectDemo1"></bean>
           <aop:config>
                  <aop:pointcut id="cutExpression" expression="execution(* *.*(..))"/>
                  <aop:aspect id="aspect1" ref="aspectDemo1"></aop:aspect>
           </aop:config>
    

    声明通知的示例代码:

           <!--加入自动扫描的包-->
           <context:component-scan base-package="com.sevenhu.AOPTests"></context:component-scan>
           <!--使AspesctJ的注解起作用-->
           <aop:aspectj-autoproxy></aop:aspectj-autoproxy>
           <bean id="aspectDemo1" class="com.sevenhu.AOPTests.AspectDemo1"></bean>
           <aop:config>
                  <aop:pointcut id="cutExpression" expression="execution(* *.*(..))"/>
                  <aop:aspect id="aspect1" ref="aspectDemo1">
                         <aop:before method="beforeMethod" pointcut-ref="cutExpression"></aop:before>
                  </aop:aspect>
           </aop:config>
    

      

  • 相关阅读:
    爬虫助手spider_tool-JUN
    frida 保存打印日志到本地
    frida get_frontmost_application报错
    adb shell安装证书/修改证书到系统级/
    利用celery进行分布式爬虫
    vscode Go插件安装失败解决方法,亲测2020.10.15
    Frida hook map集合遍历和修改
    frida_rpc dou音、饿le么 header加密
    Frida入门
    adb连接模拟器
  • 原文地址:https://www.cnblogs.com/hujingwei/p/5344647.html
Copyright © 2011-2022 走看看