自定义注释中的java Spring过程参数
我有以下资料:
方面:
@Aspect
@Component
public class AuthorizeUserAspect {
@Autowired
PermissionService permissionService;
@Around("@annotation(AuthorizeUser)")
public Object authorize(ProceedingJoinPoint joinPoint) throws Throwable {
...
}
}
接口:
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface AuthorizeUser {
}
控制器:
@GetMapping("/businesses/{businessId}/test")
public ResponseEntity<List<BusinessDto>> getBusinessListAsClient(Principal jwtAuthUser, @PathVariable String businessId) throws Exception {
...
}
我需要从方法签名中传入命名参数,再加上一个额外的自定义权限参数(读/写),所以类似这样:
@AuthorizeUser(Principal jwtAuthUser, String businessId, permission = <Enum or String>)
@GetMapping("/businesses/{businessId}/test")
这可能吗?我真的不在乎它是如何完成的,只要我能在我的authorize函数中获得这些值来使用它们
我知道我可以做一些事情,比如:
joinPoint.getArgs();
按位置获取参数,但我希望这是更通用的,某些控制器可以有不同的参数,例如第一个和第二个,所以这不起作用,而且我也不知道 如何获取最后一个值
注意:authorize只是一个示例,但我也希望对其他自定义注释参数执行此操作
# 1 楼答案
也许你应该阅读Spring AOP手册。这个怎么样