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?
By using the T(fully.qualified.name).methodName()
syntax:
You can use the special
T
operator to specify an instance ofjava.lang.Class
(the type). Static methods are invoked by using this operator as well. TheStandardEvaluationContext
uses aTypeLocator
to find types, and theStandardTypeLocator
(which can be replaced) is built with an understanding of thejava.lang
package. This means thatT()
references to types withinjava.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')
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With