aop
程序员文章站
2022-05-30 21:50:00
...
<!-- springboot-aop包,AOP切面注解,Aspectd等相关注解 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
package com.zy.ds;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.aspectj.lang.reflect.MethodSignature;
import org.springframework.stereotype.Component;
import java.lang.reflect.Method;
/**
* 自定义注解 + AOP的方式实现日志记录
* Created by linmz on 2020-05-12.
*/
@Aspect
@Component
public class OperateLogAspect {
@Pointcut("execution(* com.zy.controller.UserCtr.*(..))")
public void log(){}
@Before("log()")
public void beforeSwitchDS(JoinPoint point){
//获得当前访问的class
Class<?> className = point.getTarget().getClass();
//获得访问的方法名
String methodName = point.getSignature().getName();
//得到方法的参数的类型
Class[] argClass = ((MethodSignature)point.getSignature()).getParameterTypes();
String dataSource = DataSourceContextHolder.DEFAULT_DS;
try {
// 得到访问的方法对象
Method method = className.getMethod(methodName, argClass);
// 判断是否存在@DS注解
if (method.isAnnotationPresent(DS.class)) {
//
}
} catch (Exception e) {
e.printStackTrace();
}
}
@After(value = "log()", returning="returnValue")
public void afterSwitchDS(JoinPoint point, Object returnValue){
String jsonStr = returnValue == null ? "": returnValue.toString();
JSONObject jsonObj = JSONObject.parseObject(jsonStr);
}
}
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
package com.zy.ds;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.aspectj.lang.reflect.MethodSignature;
import org.springframework.stereotype.Component;
import java.lang.reflect.Method;
/**
* 自定义注解 + AOP的方式实现日志记录
* Created by linmz on 2020-05-12.
*/
@Aspect
@Component
public class OperateLogAspect {
@Pointcut("execution(* com.zy.controller.UserCtr.*(..))")
public void log(){}
@Before("log()")
public void beforeSwitchDS(JoinPoint point){
//获得当前访问的class
Class<?> className = point.getTarget().getClass();
//获得访问的方法名
String methodName = point.getSignature().getName();
//得到方法的参数的类型
Class[] argClass = ((MethodSignature)point.getSignature()).getParameterTypes();
String dataSource = DataSourceContextHolder.DEFAULT_DS;
try {
// 得到访问的方法对象
Method method = className.getMethod(methodName, argClass);
// 判断是否存在@DS注解
if (method.isAnnotationPresent(DS.class)) {
//
}
} catch (Exception e) {
e.printStackTrace();
}
}
@After(value = "log()", returning="returnValue")
public void afterSwitchDS(JoinPoint point, Object returnValue){
String jsonStr = returnValue == null ? "": returnValue.toString();
JSONObject jsonObj = JSONObject.parseObject(jsonStr);
}
}
上一篇: 手动安装phpunit
下一篇: json数据解析
推荐阅读
-
Spring 5.x 源码 —Spring AOP源码—代理方法的调用与增强
-
Asp.net Core 3.1基于AspectCore实现AOP实现事务、缓存拦截器功能
-
在.NET Core中三种实现“可插拔”AOP编程方式(附源码)
-
在.NET Core中三种实现“可插拔”AOP编程方式(附源码)
-
PHP三层结构(下) PHP实现AOP第1/2页_PHP教程
-
advancedofficepasswordrecovery PHP三层结构下 PHP实现AOP第1/2页
-
yui3的AOP(面向切面编程)和OOP(面向对象编程)_YUI.Ext相关
-
动态代理模拟实现aop的示例
-
spring中aop的xml配置方法实例详解
-
java使用动态代理来实现AOP(日志记录)的实例代码