Как весна оценивает SPEL внутри страны? - PullRequest
0 голосов
/ 21 апреля 2020

Например, у нас есть выражение вроде этого 'hasAnyRole ("ROLE_1", "ROLE_2")'

Я знаю, что Python имеет функцию, подобную eval, для запуска кода из строки. Но как это работает здесь? Как Spring в Java разбирает выражение? Это работает? Если да, то как?

Мой основной вопрос - как Python запускает строку, содержащую выражение. Как он понимает, что делать?

1 Ответ

2 голосов
/ 21 апреля 2020

SpEL имеет полноценный синтаксический анализатор и создает AST для выражения.

В этом случае оценка вызывает метод hasAnyRole() для объекта root для оценки.

Вы можете покопаться в деталях в отладчике, чтобы увидеть фактическую работу.

...