环绕通知(即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 抛出的异常*/@Overridepublic 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测试结果
在目标方法执行的之前的环绕通知
日志信息
在目标方法执行之后的环绕通知

SpringAOP 通知(adivce)- methodIntercepor相关推荐

  1. SpringAop通知

    2019独角兽企业重金招聘Python工程师标准>>> 基于注解的方式实现通知 1.需要的jar包: com.springsource.net.sf.cglib-2.2.0.jar ...

  2. SpringAOP技术【松思园】

    一.SpringAOP理解 SpringAOP称之为"面向切面编程",这和我们之前编程思想"面向对象编程"是不一样的,当然我们还听过"面向过程的编程& ...

  3. Spring思维导图,让Spring不再难懂(aop篇)

    2019独角兽企业重金招聘Python工程师标准>>> 什么是aop AOP(Aspect-OrientedProgramming,面向方面编程),可以说是OOP(Object-Or ...

  4. 自定义注解-aop实现日志记录

    关于注解,平时接触的可不少,像是 @Controller.@Service.@Autowried 等等,不知道你是否有过这种疑惑,使用 @Service 注解的类成为我们的业务类,使用 @Contro ...

  5. 记录请求的耗时(拦截器、过滤器、aspect)

    记录请求的耗时(拦截器.过滤器.aspect) 文章前言 记录控制器请求的耗时处理通常有三种实现方式,分别是:过滤器.拦截器.aspect:下文将逐一实现. 1.Filter 过滤器 1.1.方法说明 ...

  6. 小汤学编程之JavaEE学习day10——Spring

    一.Spring简介 1.特点     2.核心特性     3.两大核心 二.Spring环境搭建 1.导包     2.准备数据库和表.实体类     3.定义dao层接口和接口映射文件      ...

  7. SpringBoot整合AOP + 自定义注解实现简单的权限验证

    1.简介 主要通过自定义注解,使用SpringAOP的环绕通知拦截请求,判断该方法是否有自定义注解,然后判断该用户是否有该权限,这里做的比较简单. 2.项目搭建 这里是基于SpringBoot的,对于 ...

  8. Spring-AOP的五种通知和切面的优先级、通知变量声明

    SpringAOP的通知分为以下五种: 1前置通知(@before) 在连接点执行之前执行的代码 2后置通知(@after) 在连接点执行之后执行的代码,不管连接点执行后是否出现异常,后置通知都会执行 ...

  9. SpringAOP的几大通知

    首先配置application.xml文件 <?xml version="1.0" encoding="UTF-8"?> <beans xml ...

最新文章

  1. mysql 索引合并
  2. 【云周刊】第208期:阿里云MWC 2019发布7款重磅产品,助力全球企业迈向智能化...
  3. html css双色径向渐变,CSS 径向渐变
  4. Qt 实现钢笔画线效果详细原理
  5. python同时输出多个值_python如何实现输出多个值?
  6. Socket编程实践(12) --UDP编程基础
  7. Flutter OpenContainer 容器转换过渡 Material Design 设计风格的实践
  8. python函数参数的部分求值方法
  9. MAC下安装NDKR10e
  10. python join_python中join()方法介绍
  11. 统计学和计算机类对比,统计学与计算机的关系
  12. memcached源码分析-----item锁级别与item引用计数
  13. 蘑菇街商家登录php源码,蘑菇街
  14. html图片如何和输入框并排,闪亮的4个小文本输入框并排
  15. 二阶求导 算法 实现 寻峰问题(转)
  16. 卸载软件失败:“1628:完成基于脚本的安装失败”【已解决】
  17. 【2021年蓝桥杯Java-B组国赛题解】
  18. AI 计算能力TOPS
  19. 如何搭建一个个人博客,这么写纯粹是为了通过shen he
  20. 欧拉角表示旋转会出现的问题——万向锁(Gimbal Lock)

热门文章

  1. [Contest20180418]物理竞赛
  2. 用PHP实现浏览器点击下载各种格式文档的方法详解【txt apk等等】
  3. testng入门教程10 TestNG参数化测试
  4. Bazel C++ 基础[翻译]
  5. 移动开发之设计稿转换页面单位尺寸
  6. Eclipse javax.servlet.jsp.PageContext cannot be resolved to a type 错误解决办法
  7. 2010年一月份兑换公告
  8. 领域驱动设计DDD之读书笔记
  9. Java线程池(ThreadPool)详解
  10. vice versa VS the other way around