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>
    

      

  • 相关阅读:
    rgb三基色与rgba
    HTML标签与属性
    HTML的状态码
    sublime text 编辑器的操作
    驼峰命名法
    css动画速度与三次贝赛尔曲线
    相对路径和绝对路径引发的图片无法显示问题
    Javascript-选择器集合调用方法
    Javascript-商品管理新增/删除/修改功能
    Javascript-随滚轮匀速滑动的浮动广告窗动画
  • 原文地址:https://www.cnblogs.com/hujingwei/p/5344647.html
Copyright © 2011-2022 走看看