spring - Spring AOP:字段验证不起作用
问题描述
我有一个 Jersey 资源类,它对标头参数使用字段验证。
@Controller
@RequiredArgsConstructor
public class Resource {
@Min(value = 0)
@HeaderParam("id")
private int id;
@HeaderParam("Authorization")
private String header;
@Authenticate
public void get() {
}
}
然后我在@Authenticate 注释处创建一个切入点。
public class Aspect {
@Before("@annotation(Authenticate)")
public void doAuthenticate() {
}
}
问题是在创建 Aspect 之后,id 的字段验证不再起作用(传入 -1 作为 id 标头不会违反约束)。
我猜原因是由于Spring AOP使用CGLIB作为代理,它在创建代理时不会填充字段,所以一个默认值被传递给验证,然后在退出Aspect之后,它已经退出验证阶段,因此验证不起作用。
所以我的问题是: 1. 我理解正确吗?2. 我怎样才能使现场验证工作?
解决方案
推荐阅读
- postgresql - 错误:引用的关系“表名”不是表
- powershell - 使用 PowerShell 将展平的 SPF 记录应用于 DNS TXT 记录
- php - Google PHP API 客户端需要失败(不使用 Composer)
- objective-c - 我可以在 objc 类的 swift 扩展中符合一些 tableview 委托方法吗
- javascript - 如何修复javascript中的多个开关?
- mongodb-query - 使用 $lookup 连接不同数据库中的多个集合
- azure - 未应用 Azure URL 授权规则
- vue.js - Vuetify - 将字段添加到数据表页脚?
- python - 过滤 DataFrameGroupBy 中值为 false 的组
- django - 模板中的多重嵌套继承