JavaSpring:如何将注释封装到其他注释中?

JavaSpring:如何将注释封装到其他注释中?,java,spring,automation,annotations,authorization,Java,Spring,Automation,Annotations,Authorization,是否可以使用值将注释封装在其他注释中 我在我的API上有很多端点,我想为端点访问自动化所需的角色/权限 以下是当前代码: @RestController @RequestMapping("/health") public class HealthController { @GetMapping("/isAlive") @PreAuthorize("hasAnyAuthority('ISALIVE', 'HEALTH_ENDPOIN

是否可以使用值将注释封装在其他注释中

我在我的
API
上有很多端点,我想为端点访问自动化所需的
角色/权限

以下是当前代码:

@RestController
@RequestMapping("/health")
public class HealthController {
    @GetMapping("/isAlive")
    @PreAuthorize("hasAnyAuthority('ISALIVE', 'HEALTH_ENDPOINT')")
    public String isAlive() {
        return "Server is up and running";
    }

    @GetMapping("/hello")
    @PreAuthorize("hasAnyAuthority('HELLO', 'HEALTH_ENDPOINT')")
    public String hello() {
        return "Hello";
    }
}
每个端点有
2个
权限,第一个是映射和方法的名称,第二个是类的名称

在本例中,只有
2个
不同的端点,这样做很容易,但成品将有数百个端点,手工完成所有权限将很容易出错,效率也不高

这是期望的结果:

@RestController
@RequestMapping("/health")
public class HealthController {
    @GetMapping("/isAlive")
    @MyAuthorisationAnnotation
    public String isAlive() {
        return "Server is up and running";
    }

    @GetMapping("/hello")
    @MyAuthorisationAnnotation
    public String hello() {
        return "Hello";
    }
}
其中,
@myauthorizationannotation
将为
@PreAuthorize
注释提供正确的参数

可能吗

是否可以将注释封装在其他注释中 有价值观

注释可以将另一个注释作为成员

import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;

@Retention(RetentionPolicy.RUNTIME)
public @interface MyAuthorizationAnnotation {
   PreAuthorize value() default @PreAuthorize("hasAnyAuthority('HELLO', 'HEALTH_ENDPOINT')"); 
}
然而,我认为这没有帮助。我不熟悉Spring,但我认为这篇文章解决了您的问题,因为
@PreAuthorize
似乎可以应用于注释,因此如果在方法中使用选中的注释,您可以利用传递性


谢谢您的回答。你说的及物性是什么意思?我不知道如何灵活地使用它(比如:使用类名和方法作为参数)。我必须补充一点,我不确定我试图做的事情是否可以通过这种方式实现,我可能必须寻找其他方法,比如自定义过滤器(Spring Security)。我所说的传递性是指通过验证应用于该方法的自定义注释来验证该方法。下面是我指的答案:谢谢。看来我有点事要做