SpringAOP 通知(adivce)- methodIntercepor

环绕通知(即methodIntercepor) 是SpringAOP 通知模块中的一种通知方式。可用在指定方法执行之前,执行之后。对于同时要实现两种通知的方法是一种便利。若使用BeforeAdivce和afterreturningadvice则显得太多与繁琐。
可通过实现MethodInterceptor接口来实现环绕通知。

1.MethodInterceptor接口源代码

public interface MethodInterceptor extends Interceptor {
    Object invoke(MethodInvocation var1) throws Throwable;
}

2.具体小案例实现环绕通知。

2.1 具体的业务类
   /**
     * 目标业务类

     * Created by engle on 16-5-14.
     */
    public class Target{

        public void log() {
            System.out.println("日志信息");
        }
    }
2.2 环绕通知实现类
/**
 * Created by engle on 16-5-14.
 */
public class InterceptorMessage implements MethodInterceptor {

    /**
     *
     * @param methodInvocation 调用方法对象
     * @return 放回的对象
     * @throws Throwable 抛出的异常
     */
    @Override
    public Object invoke(MethodInvocation methodInvocation) throws Throwable {

        System.out.println("在目标方法执行的之前的环绕通知");
        Object proceed = methodInvocation.proceed(); //通过反射机制获取代理对象执行的方法
        System.out.println("在目标方法执行之后的环绕通知");
        return proceed;
    }
}
2.3测试类
/**
 * 测试类
 * Created by engle on 16-5-14.
 */
public class Test {
    public static void main(String[] args) {

        Target target = new Target();
        BeforeAdvice before = new BeforeMessage();
        AfterMessage after = new AfterMessage();
        MethodInterceptor interceptor = new InterceptorMessage();

        ProxyFactory factory = new ProxyFactory();  //设置代理工厂
        factory.addAdvice(interceptor);
        factory.setTarget(log);     //添加执行目标信息
        Target proxy = (Target) factory.getProxy(); //获取代理对象
        proxy.log();

    }
}
2.4测试结果
在目标方法执行的之前的环绕通知
日志信息
在目标方法执行之后的环绕通知
时间: 2024-07-31 18:57:04

SpringAOP 通知(adivce)- methodIntercepor的相关文章

Spring AOP源码分析(八)SpringAOP要注意的地方

SpringAOP要注意的地方有很多,下面就举一个,之后想到了再列出来:  (1)SpringAOP对于最外层的函数只拦截public方法,不拦截protected和private方法,另外不会对最外层的public方法内部调用的其他方法也进行拦截,即只停留于代理对象所调用的方法.如下案例:  B类有两个public方法,foo1()和foo2(),foo1内部调用了foo2,简单如下:  ? 1 2 3 4 5 6 7 8 public void foo2() {          Syste

SpringAOP用注解开发操作日志,求大神指导。急!QQ794124093

问题描述 SpringAOP用注解开发操作日志,求大神指导.急!QQ794124093 我用SSM框架,写这个日志,总是切不进去,也不知道是什么原因,找不到错误, 个人猜测是不是配置文件扫描类有问题.项目能正常运行,增删改查都没问题,就这个AOP搞不定,就知道帮忙谢谢. @Aspect @Component public class OperateLogHandler { @Resource private OperateLogService operateLogService;// 操作日志S

Spring-AOP实践 - 统计访问时间--StopWatch

本文将介绍使用注解+AOP(面向切面编程)的方式实现其功能,一来可以快速使用StopWatch功能,二来让大家熟悉一下如何使用注解进行切面编程_ 1. 自定义一个注解 StopWatchTime @Retention(RetentionPolicy.RUNTIME) @Target({METHOD}) public @interface StopWatchTime { String value() default ""; } 本注解主要用在方法上,故target为METHOD,并设定一

Spring AOP中的前置通知和后置通知详解

不同版本的spring对AOP的支持有所不同,spring2.0之前,它主要针对不同类型的拦截器使用XML配置文件通过代理来实现.而spring2.0之后,它可以使用JDK5的注解来完成AOP的实现,只是几个简单标签就可以完成,使得开发更加简单,便捷.所以推荐使用后一种方法.但是很多旧的项目中使用了前一种实现方法,所以我们也应该对第一种方法有所掌握. 首先通过代码介绍spring2.0之前如何实现前后置通知 定义一个User接口: package org.spring.advice; publi

Spring 通过来AOP 实现前置,环绕,异常通知,注解(转)

本节主要内容:     1. Spring AOP前置通知案例     2. Spring AOP环绕通知案例     3. Spring AOP异常通知案例     4. Spring AOP注解使用案例   AOP是Aspect Oriented Programming的缩写,意思是面向方面编程,AOP实际是GoF设计模式的延续   关于Spring AOP的一些术语 切面(Aspect):在Spring AOP中,切面可以使用通用类或者在普通类中以@Aspect 注解(@AspectJ风格

spring通知-BeforeAdvice和AfterReturningAdvice

通知(advice)是springAOP中重要的一个核心模块. spring 通知分为方法调用之前方法 调用之后 或者任何区间. BeforeAdvice 1 前置通知是在目标方法调用之前执行. 2 通过实现MethodBeforeAdvice来植入前置通知 3 MethodBeforeAdvice接口的主要代码: ``` public interface MethodBeforeAdvice extends BeforeAdvice { void before(Method var1, Obj

spring源码学习之:springAOP实现底层原理

一:springAOP底层实现是基于动态代理实现的.增强和切面,以及通知.是在动态代理生成的代理类inoke方法中调用实现 1 //+++++++++++++aop动态代理+++++++++++++++++++++++ 2 3 4 /** 5 * 通知,表示增强.在某些方法调用前,调用后,抛出异常后,对方法的增强.(是一个具体实现类,类中的方法实现了增强) 6 */ 7 //方法执行前通知 8 BeforeAdvice beforeAdvice ; 9 MethodBeforeAdvice Me

拉近与Android的差距:为iOS5设计消息通知

  通知中心作为iOS5的重大更新内容之一,可以将用户的iOS设备里的所有的通知集中放在一个地方,大大方便用户查看和管理.如果用户收到一封新邮 件.一条短信,或者是一个添加好友的请求,无论在任何界面下(包括游戏等全屏应用),用户都可以通过从屏幕顶部向下滑,将通知中心"拉下来",用户可以在 这里查看到所有的通知.所以苹果在iOS5的介绍中说到通知中心是你随时掌握最新生活资讯的绝佳途径. 可能出现通知的场景 一般在下面的场景中iOS应用程序会通知用户有有意思的事情发生了: 1. 收到一条消

关于支付系统中的同步通知和异步通知电商的区别,为什么需要通知

问题描述 关于支付系统中的同步通知和异步通知电商的区别,为什么需要通知 在电商对应的支付系统中当支付完成之后需要做相关的同步通知和异步通知操作,请大神解释一下什么是同步通知和异步通知,为什么需要同步通知和异步通知. 解决方案 同步用于即时通知支付完成 异步用于防止信息漏发漏收 解决方案二: 可以这样理解, 1.用户(买家)支付完成后,电商平台需要实时的给用户一个通知,如支付已经处理等待订单确认. 2.电商平台,这块就需要考虑系统技术方面的各个环节,考虑应对复杂多变的并发用户量.业务.流量.网络环