@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD})
@Documented
public @interface AnnoAopLogs {boolean value() default true;  // 是否需要打印日志
}
// 切面
@Aspect
@Configuration
public class AopLogs {@Pointcut("@annotation(com.wsgw.htjc.frontend.utils.AnnoAopLogs)")    // 设定切点public void pointCut(){}// 环绕通知@Around("pointCut()")public Object aroundLog(ProceedingJoinPoint joinpoint) throws Throwable {Object[] args = joinpoint.getArgs();String param = "";for (int i = 0; i < args.length; i++) {if (args[i] != null) {try {param += JSON.toJSONString(args[i]);} catch (Exception e) {}}}
//        long start = System.currentTimeMillis();Object result = null;String classdName = joinpoint.getTarget().getClass().getSimpleName();String methodName = joinpoint.getSignature().getName();// 获取注解Class<?> aClass = joinpoint.getTarget().getClass();Class<?>[] par=((MethodSignature) joinpoint.getSignature()).getParameterTypes();Method method = aClass.getMethod(methodName, par);AnnoAopLogs annotation = method.getAnnotation(AnnoAopLogs.class);boolean value = annotation.value();Date date = new Date();DateFormat format = new SimpleDateFormat("yyyy/MM/dd hh:mm:ss");
//        System.out.println("请求参数 【  " + param +" 】");try {if (value) {System.out.println("================== "+ format.format(date) + "=======" + classdName + " => " + methodName + " 开始请求接口 ================");//有返回参数 则需返回值result =  joinpoint.proceed();long end = System.currentTimeMillis();System.out.println("================== 请求结束【总共执行时长" + (end - date.getTime()) + " 毫秒】==========");return result;}result =  joinpoint.proceed();} catch (Exception e) {}return result;}
}

快速使用注解方式实现aop切面编程相关推荐

  1. (转)使用Spring的注解方式实现AOP入门

    http://blog.csdn.net/yerenyuan_pku/article/details/52865330 首先在Eclipse中新建一个普通的Java Project,名称为spring ...

  2. Aop切面编程原理和Spring实现

    Aop切面编程概念 AOP切面编程一般可以帮助我们在不修改现有代码的情况下,对程序的功能进行拓展,往往用于实现 日志处理,权限控制,性能检测,事务控制等 AOP实现的原理就是动态代理,在有接口的情况下 ...

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

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

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

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

  5. 第五章 Spring进阶-注解方式实现AOP(1)

    <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> 徒弟:师傅,我 ...

  6. SpringBoot2.0 基础案例(11):配置AOP切面编程,解决日志记录业务

    本文源码 GitHub地址:知了一笑 https://github.com/cicadasmile/spring-boot-base 一.AOP切面编程 1.什么是AOP编程 在软件业,AOP为Asp ...

  7. Spring中AOP切面编程学习笔记

    注解方式实现aop我们主要分为如下几个步骤: 1.在切面类(为切点服务的类)前用@Aspect注释修饰,声明为一个切面类. 2.用@Pointcut注释声明一个切点,目的是为了告诉切面,谁是它的服务对 ...

  8. (转)使用Spring的注解方式实现AOP的细节

    http://blog.csdn.net/yerenyuan_pku/article/details/52879669 前面我们已经入门使用Spring的注解方式实现AOP了,现在我们再来学习使用Sp ...

  9. Spring5学习(七):注解方式进行AOP操作 及 多种通知类型的测试

    先来介绍一下AOP操作中的几个术语: 1.连接点:指类里面可以被增强的方法 2.切入点:指实际被增强的方法 3.通知:指实际增强的逻辑部分 4.切面:把通知应用到切入点的过程 Spring框架一般都是 ...

  10. Spring 框架基础(04):AOP切面编程概念,几种实现方式演示

    本文源码:GitHub·点这里 || GitEE·点这里 一.AOP基础简介 1.切面编程简介 AOP全称:Aspect Oriented Programming,面向切面编程.通过预编译方式和运行期 ...

最新文章

  1. [置顶] 自己动手实现OpenGL-OpenGL原来如此简单(二)
  2. CAS 服务器端取消 https的配置 方法
  3. c#如何跳出一个函数_C#初学者教程系列9:类和对象
  4. C语言函数题- 删除字符串中下标为i的字符
  5. HandlerExceptionResolvers
  6. oracle扩展dblink数。
  7. 【渝粤教育】 国家开放大学2020年春季 1069中央银行理论与实务 参考试题
  8. thinkphp仿素材火教程_国外都用古风效果图获奖了,为什么你连素材都没有?
  9. A Point-Line Feature based Visual SLAM Method in Dynamic Indoor Scene
  10. 从 Android 6.0 源码的角度剖析 Binder 工作原理 | CSDN 博文精选
  11. 018 HDFS中,namenode与datanode的交互
  12. ear的英语怎么念_Dog是“狗”,ear是“耳朵”,Dog ear真不是“狗耳朵”
  13. 学了python可以干嘛-学Python后到底能干什么?网友:我太难了
  14. Java对数组的操作(二)—集合与数组的切换
  15. 【机器学习算法实现】主成分分析(PCA)——基于python+numpy
  16. Error: The method ‘DioHttpHeaders.add‘ has fewer named arguments than those of overridden method
  17. Macropodus 新词发现详解(new word discovery, python3)
  18. 收益用计算机怎么计算,有利网收益计算器怎么用
  19. 第七章 在网页中嵌入多媒体内容
  20. 什么是软件维护?在软件已经交付使用后,为了改正错误或满足新需求而修改软件的过程。它有哪几种类型?

热门文章

  1. 超感光徕卡电影四摄:华为Mate30系列国内开售
  2. Shiro集成Cas单点登录
  3. 微信小程序开发:微信小程序里面集成百度地图的步骤
  4. 免费PDF阅读器都是坑?这些开源神器我可是恨不得所有人都知道
  5. 初探PLC 的ST 语言转换成C++ 的方法
  6. ssh实现远程登录服务器
  7. 使用Charles进行HTTPS抓包
  8. 陶教授,我记不住定理的证明该怎么办?(我看到陶哲轩在博客上与学生一则有意思的互动,就翻译过来了)...
  9. 脚本文件和函数文件的区别
  10. 秒杀系统设计思路和实现方法