Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Calling static methods from Spring Security Expressions?

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?

like image 478
C. Ross Avatar asked Sep 28 '11 15:09

C. Ross


1 Answers

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') 
like image 152
C. Ross Avatar answered Oct 10 '22 08:10

C. Ross