【问题标题】:Calling static methods from Spring Security Expressions?从 Spring Security Expressions 调用静态方法?
【发布时间】:2011-11-26 23:45:06
【问题描述】:

我正在寻找一种方法来扩展 Spring Security Expressions 以支持现有的安全基础设施。我知道您可以按照here 的描述扩展 MethodSecurityExpressionRoot,但我还发现reference 通过 Spring 表达式语言(Spring EL 或 SpEL)直接调用静态方法。不幸的是,Spring Expression 方法中的official page 没有直接描述如何执行此操作。

如何通过 Spring Expression 方法调用静态方法?

【问题讨论】:

    标签: spring spring-security spring-el


    【解决方案1】:

    通过使用T(fully.qualified.name).methodName() syntax

    您可以使用特殊的T 运算符来指定java.lang.Class 的实例(类型)。静态方法也可以使用此运算符调用。 StandardEvaluationContext 使用TypeLocator 来查找类型,而StandardTypeLocator(可以替换)是在了解java.lang 包的基础上构建的。这意味着 T()java.lang 中的类型的引用不需要完全限定,但所有其他类型引用必须是完全限定的。

    T 元素返回对类型的引用而不是实例。例如,Collections.singleton("Hello") 的等价物是

    T(java.util.Collections).singleton('Hello')
    

    【讨论】:

    • 如何将方法参数的属性作为目标方法的参数之一传递?
    • @JinKwon T(java.util.Collections).singleton(#yourArg)
    猜你喜欢
    • 2015-02-02
    • 1970-01-01
    • 1970-01-01
    • 2016-10-04
    • 1970-01-01
    • 2011-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多