Calling static methods from Spring Security Expressions?

旧城冷巷雨未停 提交于 2019-11-30 16:35:34

问题


I'm looking for a way to extend Spring Security Expressions to support an existing security infrastructure. I'm aware you can extend the MethodSecurityExpressionRoot as described here, but I also found reference to directly calling static methods through Spring Expression Language (Spring EL or SpEL). Unfortunately the official page on Spring Expression methods doesn't directly describe how to do this.

How can I invoke a static method through Spring Expression methods?


回答1:


By using the T(fully.qualified.name).methodName() syntax:

You can use the special T operator to specify an instance of java.lang.Class (the type). Static methods are invoked by using this operator as well. The StandardEvaluationContext uses a TypeLocator to find types, and the StandardTypeLocator (which can be replaced) is built with an understanding of the java.lang package. This means that T() references to types within java.lang do not need to be fully qualified, but all other type references must be.

The T element returns a reference to the type instead of an instance. For example, the equivalent of Collections.singleton("Hello") is

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


来源:https://stackoverflow.com/questions/7585627/calling-static-methods-from-spring-security-expressions

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!