java - springboot-aop 无法获取 joinPoint 参数的类对象
问题描述
我正在尝试通过spring AOP获取一些方法参数,然后尝试使用getClass()
获取参数的类对象,但我无法获取类对象,例如java.sql.Time
,它会抛出java.lang.NullPointerException
。有代码片段:
com.example.vzard.web.TUserController.java
@RequestMapping(value = "/user",method = RequestMethod.POST)
@TimeStamp(type = TUser.class)
public boolean addUser(TUser user, Object o, Time time){
return itUserService.insertAllColumn(user);
}
com.example.vzard.annotation.TimeStamp.java
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface TimeStamp {
Class type() default Object.class;
TimeStampRank rank() default TimeStampRank.FULL;
}
com.example.vzard.aspect.TimeStampAspect.java
@Pointcut("@annotation(com.example.vzard.annotation.TimeStamp)")
public void pointCut(){
}
@Before("pointCut() && @annotation(timeStamp)")
public void before(JoinPoint joinPoint,TimeStamp timeStamp){
Long currentTime = System.currentTimeMillis();
Class type = timeStamp.type();
Object[] argList = joinPoint.getArgs();
System.out.println(argList.length);
for (Object arg : argList) {
//there will throw Exception
log.info(arg.getClass().toString());
}
}
我发现它可能与参数类是否有空构造函数有关,当我java.sql.Time
用空构造函数替换某些类时会好的,但我不确定这是否是真正的原因。
解决方案
推荐阅读
- jenkins - 如何一次触发多个公关工作
- java - 是否有任何 Jgit API 可以让我们从 GIT repo 上的特定文件中读取内容。无需克隆其中的所有数据
- node.js - 使用 mocha 测试 express 服务器并使用异步初始化程序进行 supertest 调用请求两次
- php - laravel 7刀片组件公共方法不起作用
- r - 绘制数据时可变长度不同
- testing - 如果任何参数化测试通过,如何使 pytest 通过测试?
- c# - 首先获取从属实体时无法访问主体实体
- api - 我将如何在 Postman 中取得成功?
- python - pyqt5边框仅适用于父小部件问题
- here-api - 将卡车限制数据与 Here 地图中的道路名称/几何数据匹配