我的几个控制器上都有一个@CrossOrigin注释。我希望能够在某处设置static final并让所有引用。就像是:

public static final String[] ORIGINS = {"domain1","domain2"};
...
@CrossOrigin(origins = ORIGINS)


但是,我显然有一些语法问题。


对于那些对做同样的事情感兴趣的人,这是我所做的:

@Target({ElementType.FIELD, ElementType.PARAMETER, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@CrossOrigin(origins = {
        "domain1",
        "domain2"
})
@Controller
@interface CORSPermittedController {
}


这样我就可以用@CORSPermittedController注释所有控制器

最佳答案

不幸的是,您不能使用Java语法来做到这一点。属性值必须是编译常量(原始,String文字或这些类型的数组)。

但是您可以编写一个bean后处理器,该处理器负责使用javassist在运行时将此注释放在类上。

08-04 09:33