Передать значение из метааннотации Spring в другую аннотацию - PullRequest
1 голос
/ 12 февраля 2020

Мой вариант использования:
У меня будет много @PreAuthorize аннотаций в форме @PreAuthorize("hasAuthority('RESPECT_MY_AUTHORITY')").
Я хотел бы создать метааннотацию @HasAuthority, которая принимает авторитет в качестве значения и передать его @PreAuthorize("hasAuthority(<value>)").

Такое чувство, что это невозможно. Самое близкое к тому, что я хочу, - это что-то вроде аннотации @AliasFor. но проблема в том, что я не могу ничего добавить к значению, которое получу в @HasAuthority. Поэтому мне придется каждый раз повторять часть hasAuthority.

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@PreAuthorize("hasAuthority('RESPECT_MY_AUTHORITY')")
public @interface HasAuthority {

    @AliasFor(annotation = PreAuthorize.class, attribute = "value")
    String value();

}

Мне бы хотелось что-то вроде:

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@PreAuthorize("hasAuthority(#value)")
public @interface HasAuthority {

    String value();

}

Любая идея, как я могу это сделать, или если это вообще возможно

...