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>
    

      

  • 相关阅读:
    springboot2系列目录
    zookeeper 集群部署
    canal 配置 详细说明
    在Docker环境下部署Kafka
    Spring4新特性
    centos7 卸载 jdk
    Kafka安装
    Scala 面向对象(三):package 包 (二)
    Scala 基础(七):Scala 运算符
    Maven 专题(四):什么是Maven
  • 原文地址:https://www.cnblogs.com/hujingwei/p/5344647.html
Copyright © 2011-2022 走看看