快速使用注解方式实现aop切面编程
@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切面编程相关推荐
- (转)使用Spring的注解方式实现AOP入门
http://blog.csdn.net/yerenyuan_pku/article/details/52865330 首先在Eclipse中新建一个普通的Java Project,名称为spring ...
- Aop切面编程原理和Spring实现
Aop切面编程概念 AOP切面编程一般可以帮助我们在不修改现有代码的情况下,对程序的功能进行拓展,往往用于实现 日志处理,权限控制,性能检测,事务控制等 AOP实现的原理就是动态代理,在有接口的情况下 ...
- Spring中的AOP切面编程的三种实现方式
文章目录 Spring中的AOP切面编程的三种实现方式 1.最基本AOP的实现 a.引入jar包 b.编写通知类,这里以后置通知和环绕通知类为例子进行说明 c.在SpringIOC容器中配置 d.测试 ...
- java切面类整合_SpringBoot2.x【五】整合AOP切面编程
SpringBoot2.x[五]整合AOP切面编程 面向方面编程(AOP)通过提供另一种思考程序结构的方式来补充面向对象编程(OOP). OOP中模块化的关键单元是类,而在AOP中,模块化单元是方面. ...
- 第五章 Spring进阶-注解方式实现AOP(1)
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> 徒弟:师傅,我 ...
- SpringBoot2.0 基础案例(11):配置AOP切面编程,解决日志记录业务
本文源码 GitHub地址:知了一笑 https://github.com/cicadasmile/spring-boot-base 一.AOP切面编程 1.什么是AOP编程 在软件业,AOP为Asp ...
- Spring中AOP切面编程学习笔记
注解方式实现aop我们主要分为如下几个步骤: 1.在切面类(为切点服务的类)前用@Aspect注释修饰,声明为一个切面类. 2.用@Pointcut注释声明一个切点,目的是为了告诉切面,谁是它的服务对 ...
- (转)使用Spring的注解方式实现AOP的细节
http://blog.csdn.net/yerenyuan_pku/article/details/52879669 前面我们已经入门使用Spring的注解方式实现AOP了,现在我们再来学习使用Sp ...
- Spring5学习(七):注解方式进行AOP操作 及 多种通知类型的测试
先来介绍一下AOP操作中的几个术语: 1.连接点:指类里面可以被增强的方法 2.切入点:指实际被增强的方法 3.通知:指实际增强的逻辑部分 4.切面:把通知应用到切入点的过程 Spring框架一般都是 ...
- Spring 框架基础(04):AOP切面编程概念,几种实现方式演示
本文源码:GitHub·点这里 || GitEE·点这里 一.AOP基础简介 1.切面编程简介 AOP全称:Aspect Oriented Programming,面向切面编程.通过预编译方式和运行期 ...
最新文章
- [置顶] 自己动手实现OpenGL-OpenGL原来如此简单(二)
- CAS 服务器端取消 https的配置 方法
- c#如何跳出一个函数_C#初学者教程系列9:类和对象
- C语言函数题- 删除字符串中下标为i的字符
- HandlerExceptionResolvers
- oracle扩展dblink数。
- 【渝粤教育】 国家开放大学2020年春季 1069中央银行理论与实务 参考试题
- thinkphp仿素材火教程_国外都用古风效果图获奖了,为什么你连素材都没有?
- A Point-Line Feature based Visual SLAM Method in Dynamic Indoor Scene
- 从 Android 6.0 源码的角度剖析 Binder 工作原理 | CSDN 博文精选
- 018 HDFS中,namenode与datanode的交互
- ear的英语怎么念_Dog是“狗”,ear是“耳朵”,Dog ear真不是“狗耳朵”
- 学了python可以干嘛-学Python后到底能干什么?网友:我太难了
- Java对数组的操作(二)—集合与数组的切换
- 【机器学习算法实现】主成分分析(PCA)——基于python+numpy
- Error: The method ‘DioHttpHeaders.add‘ has fewer named arguments than those of overridden method
- Macropodus 新词发现详解(new word discovery, python3)
- 收益用计算机怎么计算,有利网收益计算器怎么用
- 第七章 在网页中嵌入多媒体内容
- 什么是软件维护?在软件已经交付使用后,为了改正错误或满足新需求而修改软件的过程。它有哪几种类型?