2019独角兽企业重金招聘Python工程师标准>>>

AspectJ是目前最流行的AOP框架。
本例采用注解的方式实现前置通知,xml配置方式稍后讲解
//接口

public interface Calculator {int add(int i,int j);int sub(int i,int j);
}

//接口实现类

@Component
public class CalculatorImpl implements Calculator{@Overridepublic int add(int i, int j) {int result = i+j;return result;}@Overridepublic int sub(int i, int j) {int result = i-j;return result;}}

//切面类

package com.test.aop.impl;import java.util.Arrays;
import java.util.List;import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.springframework.stereotype.Component;/*** 切面类* 1.需要将该类放入到IOC容器中* 2.再将它申明为一个切面*/
@Aspect
@Component
public class LoggingAspect {//声明该方法是一个前置通知//在如下方法开始执行之前执行@Before("execution(public int com.test.aop.impl.CalculatorImpl.add(int, int))")public void beforeMethod(JoinPoint joinPoint) {//获取方法名String methodName = joinPoint.getSignature().getName();//获取方法参数List<Object> args = Arrays.asList(joinPoint.getArgs());System.out.println("The method" + methodName + "begin"+args);}//后置通知//目标方法执行之后(无论是否发生异常),执行的通知@After("execution(* com.test.aop.impl.CalculatorImpl.*(int,int))")public void afterMethod(JoinPoint joinPoint) {//获取方法名String methodName = joinPoint.getSignature().getName();System.out.println("The method" + methodName + "end");}
}

//main方法

public class Main {@SuppressWarnings("resource")public static void main(String[] args) {ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");Calculator calculator = ctx.getBean(Calculator.class);int result = calculator.add(1, 2);System.out.println(result);}
}

//xml配置文件

  <!-- 自动扫描包 --><context:component-scan base-package="com.test.aop.impl"></context:component-scan><!-- 使AspectJ注解起作用,为匹配的类生成代理对象 --><aop:aspectj-autoproxy></aop:aspectj-autoproxy>

//输出结果

The methodaddbegin[1, 2]
The methodaddend
3

转载于:https://my.oschina.net/u/2312022/blog/740510

spring --(16)AOP前置通知与后置通知相关推荐

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

    不同版本的spring对AOP的支持有所不同,spring2.0之前,它主要针对不同类型的拦截器使用XML配置文件通过代理来实现.而spring2.0之后,它可以使用JDK5的注解来完成AOP的实现, ...

  2. spring之aop(前置通知,后置通知,环绕通知,过滤通知,异常通知)

    1.AOP中关键性概念  连接点(Joinpoint):程序执行过程中明确的点,如方法的调用,或者异常的抛出 目标(Target):被通知(被代理)的对象 注1:完成具体的业务逻辑 通知(Advice ...

  3. spring之AOP(面向切面编程)和五大通知(前置通知、后置通知、异常通知、环绕通知、过滤通知)

    一.aop的介绍 1.AOP中关键性概念 : 连接点(Joinpoint):程序执行过程中明确的点,如方法的调用,或者异常的抛出. 目标(Target):被通知(被代理)的对象 注1:完成具体的业务逻 ...

  4. Spring Boot AOP面向切面编程使用(定义切入点、前置通知、后置通知、返回通知、异常通知、环绕通知)

    1 AOP AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术.AOP是OOP的延续,是软件开发 ...

  5. 配置切入点表达式|| 前置通知、后置通知、异常通知、最终通知、环绕通知

    环绕通知 pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns=&quo ...

  6. spring中的前置处理器和后置处理器区别

    背景: SpringIOC容器它会以某种方式,加载配置文件中的 信息,将其解析为一个个的BeanDefinition.之后将BeanDefinition注册到容器之中.Spring IOC容器在实现的 ...

  7. Spring3.0中的前置通知、后置通知、环绕通知、异常通知

    观众类Audience~~ [java] view plain copy package com.jCuckoo.demo; import org.aspectj.lang.ProceedingJoi ...

  8. spring21:Aspectj实现后置通知@AfterReturning

    切面类: package com.atChina.Test2;import org.aspectj.lang.JoinPoint; import org.aspectj.lang.annotation ...

  9. 【C++深度剖析教程19】前置操作符与后置操作符

    今天来学习C++中的前置操作符(++i)与后置操作符(i++). 一回顾 以前在C语言的理论课程中,我们就学过,前置和后置操作符,有一定的区别: 但是我们可以看到下图,发现前置和后置++的操作符所对应 ...

  10. 公司注册涉及前置审批和后置审批的经营范围有哪些(2019年上海最新版)

    客户注册公司的时候,有时会有这样的疑惑,为什么我想经营这个,却被告之这个经营范围涉及到许可证的办理,是需要进行前置审批(或者后置审批),办理专项许可证的.那么,到底什么是前置审批和后置审批呢?具体哪些 ...

最新文章

  1. How to Enable Trace or Debug for APIs executed as SQL Script Outside of the Applications ?
  2. php实现人员权限管理(用户界面)
  3. 自动化部署之gitlab备份和恢复
  4. 一个月内取得多项技术进展,详解阿里AI背后的故事
  5. Bash基础(2) 通配符 组合键 数据重定向 管道 tee
  6. 搜狗输入法电脑版_搜狗输入法就是垃圾!!!大大的垃圾!
  7. [学习笔记]状压dp
  8. mybatis学习(37):动态sql-trim
  9. python爬虫之json数据处理
  10. FusionChart 保存图片
  11. 认识div(division)在排版中的作用
  12. The Penn Discourse TreeBank 2.0
  13. 【Python之旅】第四篇(二):Python异常处理与异常捕捉
  14. 《Java程序员职场全功略:从小工到专家》连载四:IT人不容易
  15. HighCharts:图表默认的英文日期改为中文显示
  16. 【数学建模】基于matlab GUI停车场仿真系统【含Matlab源码 1046期】
  17. java判断是否为5的倍数,如何用编程实现“判断输入的正整数是否既是5又是7的正倍数,若是,则输出yes,否则输出no”?...
  18. vue+ele 使用及demo
  19. java获取当前时间星期几_Java8 获取当前日期时间及星期几
  20. 一名合格的Java后端工程师或架构师必须要掌握 Spring Framework、Spring Boot、Spring Cloud

热门文章

  1. docker学习笔记一:基本安装和设置容器静态ip
  2. 自定义ContentProvider
  3. Windows Server 2003下ASP.NET无法识别IE11的解决方法【转】
  4. ajax hash缓存
  5. ora-01950:对表空间XXX无权限
  6. viewstate和session(转自博客园)
  7. SpringBoot 的配置文件
  8. jmeter无法启动的解决办法
  9. Volley(六 )—— 从源码带看Volley的缓存机制
  10. [BZOJ1009]GT考试