Вызов статических методов из Spring Security Expressions? - PullRequest
28 голосов
/ 28 сентября 2011

Я ищу способ расширения Spring Security Expressions для поддержки существующей инфраструктуры безопасности.Я знаю, что вы можете расширить MethodSecurityExpressionRoot, как описано здесь , но я также нашел ссылку на прямой вызов статических методов через язык выражений Spring (Spring EL или SpEL).К сожалению, официальная страница о методах Spring Expression напрямую не описывает, как это сделать.

Как вызвать статический метод с помощью методов Spring Expression?

1 Ответ

48 голосов
/ 28 сентября 2011

Используя синтаксис T(fully.qualified.name).methodName() :

Вы можете использовать специальный оператор T, чтобы указать экземпляр java.lang.Class (тип).Статические методы также вызываются с помощью этого оператора.StandardEvaluationContext использует TypeLocator для поиска типов, а StandardTypeLocator (который можно заменить) построен с пониманием пакета java.lang.Это означает, что T() ссылки на типы в java.lang не должны быть полностью квалифицированными, но все другие ссылки на типы должны быть.

Элемент T вместо этого возвращает ссылку на типэкземпляра.Например, Collections.singleton("Hello") эквивалентен

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