【问题标题】:Java Spring - Annotation param as a property valueJava Spring - 注释参数作为属性值
【发布时间】:2015-03-04 09:02:59
【问题描述】:

Java - 来自属性值的 Spring Annotation 参数

以下是我的 @Secured 注释,我想在 .properties 文件中定义字符串“USER_ABC”并在此处像 @Secured({myProp}) 一样使用它,但它给了我错误

@Value('${my.property}') private string myProp;

   @Secured({myProp,"ADMIN_123"})
    public void mySecureMethod(){
    }

而不是

@Secured({"USER_ABC","ADMIN_123"})
public void mySecureMethod(){
}

任何解决方案提前表示赞赏。

【问题讨论】:

  • 我的理解是注解参数必须是constant expressions。不幸的是,您尝试做的不是其中之一。

标签: java spring annotations


【解决方案1】:

虽然您不能使用 @Secured,因为正如 Edwin 指出的那样,它无法处理常量表达式,但您可以使用将评估 SPEL 表达式的 @PreAuthorize 注释。

请注意,@PreAuthorize 在 Spring Security Filter 链和被调用时的工作方式略有不同。

有一个很好的问题可能应该是您的第一个停靠港here。如果有什么原因不能使用@PreAuthorize,请告诉我。

【讨论】:

    猜你喜欢
    • 2015-07-03
    • 1970-01-01
    • 2020-07-13
    • 1970-01-01
    • 2019-09-01
    • 2018-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多