话不多说,直接上代码:

package com.cdms.aop.aspectImpl;

import org.aspectj.lang.JoinPoint;

import org.aspectj.lang.ProceedingJoinPoint;

import org.aspectj.lang.annotation.*;

import org.springframework.stereotype.Component;

import java.util.Arrays;

import java.util.List;

/**

* 创建 by 草帽boy on 2017/4/1.

*/

@Aspect

@Component

public class ICacheAopAction {

@Pointcut("@annotation(com.cdms.aop.ICache)")

private void controllerAspect(){}

@Before("controllerAspect()")

public void Before(JoinPoint joinPoint){

String classname = joinPoint.getTarget().getClass().getSimpleName();

String methodName = joinPoint.getSignature().getName();

List args = Arrays.asList(joinPoint.getArgs());

System.out.println("@before Execute! --class name: " + classname + ", method name: " + methodName + " " + args );

}

@Around("controllerAspect()")

public Object Around(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {

System.out.println("@Around:执行目标方法之前...");

Object obj= proceedingJoinPoint.proceed();

System.out.println("@Around:执行目标方法之后...");

System.out.println("@Around:被织入的目标对象为:" + proceedingJoinPoint.getTarget());

System.out.println( "@Around:原返回值:" + obj + ",这是返回结果的后缀");

return obj;

}

@AfterThrowing("controllerAspect()")

public void AfterThrowing(){

System.out.println("异常通知....");

}

@After("controllerAspect()")

public void After(JoinPoint point){

System.out.println("@After:模拟释放资源...");

System.out.println("@After:目标方法为:" +

point.getSignature().getDeclaringTypeName() +

"." + point.getSignature().getName());

System.out.println("@After:参数为:" + Arrays.toString(point.getArgs()));

System.out.println("@After:被织入的目标对象为:" + point.getTarget());

}

@AfterReturning("controllerAspect()")

public void AfterReturning(JoinPoint point){

System.out.println("@AfterReturning:模拟日志记录功能...");

System.out.println("@AfterReturning:目标方法为:" +

point.getSignature().getDeclaringTypeName() +

"." + point.getSignature().getName());

System.out.println("@AfterReturning:参数为:" +

Arrays.toString(point.getArgs()));

System.out.println("@AfterReturning:返回值为:" );

System.out.println("@AfterReturning:被织入的目标对象为:" + point.getTarget());

}

}

测试的结果是:

这样就很清楚的看出各种方法是在什么时候调用的啦

java around_关于Aop切面中的@Before @Around等操作顺序的说明相关推荐

  1. spring aop切面中获取代理bean的名字以及bean

    //切面中搞: Map<String , Object> map = (Map)ApplicationContextHelper.getBean(proceedingJoinPoint.g ...

  2. (十六)ATP应用测试平台——java应用中的过滤器Filter、拦截器Interceptor、参数解析器Resolver、Aop切面,你会了吗?

    前言 过滤器Filter.拦截器Interceptor.参数解析器Resolver.Aop切面是我们应用开发中经常使用到的技术,到底该如何使用这些web附属功能, 本小节我们就分别介绍一下其各自的用法 ...

  3. java切面类整合_SpringBoot2.x【五】整合AOP切面编程

    SpringBoot2.x[五]整合AOP切面编程 面向方面编程(AOP)通过提供另一种思考程序结构的方式来补充面向对象编程(OOP). OOP中模块化的关键单元是类,而在AOP中,模块化单元是方面. ...

  4. java 切面_实用|AOP切面编程手段大汇总

    点击上方"欧学长的架构成长之路" 关注我 前言 首先说一下什么是AOP? AOP就是面向切面编程,它是一个思想,通过切面,我们可以将那些反复出现的代码抽取出来,放在一个地方统一处理 ...

  5. 切面是异步还是同步操作‘_分布式中采用Logback的MDC机制与AOP切面结合串联日志...

    导读:在实际开发中,打印日志是十分重要的.在生产环境中,如果日志打得好可以快速地排查问题,而在分布式的场景下,一个请求会跨越多个节点,既一个业务可能需要多个节点协调配合处理.那么日志将会分散,而为了更 ...

  6. Spring AOP——Spring 中面向切面编程

    前面两篇文章记录了 Spring IOC 的相关知识,本文记录 Spring 中的另一特性 AOP 相关知识. 部分参考资料: <Spring实战(第4版)> <轻量级 JavaEE ...

  7. Spring中的AOP切面编程的三种实现方式

    文章目录 Spring中的AOP切面编程的三种实现方式 1.最基本AOP的实现 a.引入jar包 b.编写通知类,这里以后置通知和环绕通知类为例子进行说明 c.在SpringIOC容器中配置 d.测试 ...

  8. java切面获取reqiest,怎么在webflux切面中获取请求头.

    问题描述. 萌新在线踩坑.... 我需要在切面中获取当前用户的请求信息,比如请求头信息. 但是不能像mvc一样通过以下方式实现. @Autowired private HttpServletReque ...

  9. java 切面 不执行,解决springboot的aop切面不起作用问题(失效的排查)

    检查下springboot的启动类是否开启扫描 @springbootapplication @componentscan(basepackages = {"com.zhangpu.spri ...

最新文章

  1. 'datetime.datetime' object is not callable
  2. 爬虫基本库的使用---urllib库
  3. 计算机网络【某个单位的网点由4个子网组成,结构如图所示,其中主机H1、H2、H3、H4的IP地址和子网掩码如表所示。 (1)请写出路由器R1到4个子网的路由表。(2)...】
  4. 自动化运维工具——ansible安装及模块介绍
  5. .Net 4.X 提前用上 .Net Core 的配置模式以及热重载配置
  6. nacos 本地测试_Nacos注册中心落地实践
  7. 1008 数组元素循环右移问题(C语言)
  8. SpringBoot之kafka对接topic
  9. 【2022年战略管理公开课计划】向华为学习 业务领先的战略规划SP(BLM)和战略解码BP(BEM)
  10. AI Image Enlarger黑科技-人工智能无损放大图片素材不失真
  11. Android开发中自定义表情并发送出去之经典的发送表情
  12. 批量取消关注和删除微博
  13. linux设置合上电脑,[转载]笔记本上装CentOS 7 设置合上盖子不休眠
  14. 利用Python进行数据分析笔记-pandas建模(statsmodels篇)
  15. 计算机软件著作权登记的申请流程是什么
  16. Node.js中的egg入门、egg路由、egg控制器、egg服务、egg中间件
  17. android最新版本9.1,微信9.1.0版本
  18. Python中 -m pip install -U --force-reinstall pip 个人经验及解决办法
  19. php写类,php 类的写法
  20. 自主可控!搭载龙芯二号,飞凌嵌入式FET-2K0500-C核心板发布

热门文章

  1. 中国蚁剑连接一句话木马
  2. HEL库入门教程:STM32CubeIDE汉化教程 直接在线安装 简单易懂
  3. android多个单选按钮互斥使用,在android中使用RadioButton时,要想实现互斥
  4. 小学6年级下册计算机课教案,小学六年级下册音乐教案大全
  5. Visual Studio 6/2005/2008/2010/2012/2013 各版本编译器 下载
  6. ninja编译方法介绍
  7. 人力资源管理计算机基础,人力资源管理-专-李佑强-计算机应用基础实践报告.doc...
  8. 【ManageEngine】IT服务管理(ITSM)指南
  9. MySQL BETWEEN 语法
  10. HTTP状态码code类型