[英]Spring - Pass parameters in custom annotation
我有以下幾點:
方面:
@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 {
...
}
我需要傳入方法簽名中的命名參數,以及一個額外的自定義權限參數(READ / WRITE),如下所示:
@AuthorizeUser(Principal jwtAuthUser, String businessId, permission = <Enum or String>)
@GetMapping("/businesses/{businessId}/test")
這可能嗎? 我真的不在乎它是如何完成的,只要我能在我的授權函數中獲得這些值來使用它們。
我知道我可以這樣做:
joinPoint.getArgs();
按位置獲取參數,但我希望這更通用,例如某些控制器可以具有不同的參數作為第一個和第二個參數,因此這是行不通的,而且我不知道如何獲取最后一個值。
注意:授權只是一個示例,但我也想對其他自定義注釋參數執行此操作。
也許您應該閱讀 Spring AOP 手冊。 這個怎么樣?
@Around("@annotation(authorizeUser)")
public Object authorize(ProceedingJoinPoint joinPoint, AuthorizeUser authorizeUser)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.