我正在寻找一种扩展Spring Security Expressions以支持现有安全基础架构的方法。我知道你可以扩展MethodSecurityExpressionRoot,如here所述,但我也发现reference通过Spring Expression Language(Spring EL或SpEL)直接调用静态方法。不幸的是,Spring表达式方法上的official page并未直接描述如何执行此操作。
如何通过Spring Expression方法调用静态方法?
答案 0 :(得分:45)
使用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')