我创建了一个自定义注释
annotation class UserControl(
val userIdentifier: String
)
我希望将此注释应用于不同控制器中的查询参数和路径变量。
fun userWithMobile(
@UserControl("PhoneNumber")
@RequestParam mobile: String
): RegisteredUser {
return userManager.getUserWithPhoneNumber(mobile))
}
我如何检查查询参数是否有UserControl注释,并对此进行一些处理。有没有标准的方法来编写全局处理程序,或者为此编写处理器?
感谢的任何帮助
AspectJ可以直接匹配参数注释,但不能将它们绑定到类或方法注释等建议方法值。所以,如果你只想匹配它们,一个简单的切入点就足够了。如果你想访问注释,也许还有它们的参数值,你需要一点反射魔法。我已经回答了很多次相关的问题,这就是为什么我要把这一次作为重复来结束。但首先,这里是你想阅读的资源。它们都与您的问题有关,展示了如何处理不同特定情况的示例:
- https://stackoverflow.com/a/38162279/1082681
- https://stackoverflow.com/a/10595712/1082681
- https://stackoverflow.com/a/50540489/1082681
- https://stackoverflow.com/a/49872132/1082681
- https://stackoverflow.com/a/61284425/1082681
- https://stackoverflow.com/a/16624766/1082681
基本上,你想要的切入点是以下或它的一些变体:
execution(* *(.., @my.package.UserControl (*), ..))
在不匹配切入点中的参数的情况下,仅使用重感染的天真、效率较低的方法:
- https://stackoverflow.com/a/27784714/1082681
- https://stackoverflow.com/a/42561014/1082681