web-dev-qa-db-ja.com

Springセキュリティ式から静的メソッドを呼び出しますか?

Spring Security Expressionsを拡張して、既存のセキュリティインフラストラクチャをサポートする方法を探しています。説明されているようにMethodSecurityExpressionRootを拡張できることは承知しています ここ ですが、 参照 がSpring式言語(Spring ELまたはSpEL)を介して静的メソッドを直接呼び出すこともわかりました。残念ながら、Spring Expressionメソッドの 公式ページ は、これを行う方法を直接説明していません。

Spring Expressionメソッドを介して静的メソッドを呼び出すにはどうすればよいですか?

32
C. Ross

T(fully.qualified.name).methodName()構文 を使用する:

特別なT演算子を使用して、_Java.lang.Class_(タイプ)のインスタンスを指定できます。静的メソッドは、この演算子も使用して呼び出されます。 StandardEvaluationContextTypeLocatorを使用して型を検索し、StandardTypeLocator(置換可能)は_Java.lang_パッケージを理解して構築されています。つまり、_Java.lang_内の型へのT()参照は完全修飾である必要はありませんが、他のすべての型参照は完全修飾である必要があります。

T要素は、インスタンスではなく型への参照を返します。たとえば、Collections.singleton("Hello")に相当するものは

_T(Java.util.Collections).singleton('Hello')
_
51
C. Ross