JUGLviv

Meta


Share on:


Spring Expression Language (SpEL)

juglvivjuglviv

Spring пропонує шикарні можливості для декларатовного опису параметрів, а вершиною можливостей є Spring Expression Language. По суті, це потужня мова, що надає динаміку до конфігурування бінів, у тому числі можливість працювати графом об”єктів під час виконання. Хто знайомий з OGNL – то це дуже подібно і вшито в спрінг контекст.

Найпростіший приклад: припустимо, ви маєте проперті файл у якому даєте можливість корисутвачу задавати якийсь інтервал часу в годинах (тобто з точки зору користвувача мінімальний крок в налаштуваннях є година), але самі в коді потребуєте секунди, можна інджектати це ось таким чином:

Наступний приклад, це можливість викликати вашу кастомну функцію, припустимо ви маєте пропертю, до користувач задає якусь відносну директорію, а ви хочете в біні отримати вже абсолютний шлях. Ваший абсолютний шлях = спецефічний для хосту шлях + відносний шлях. Ви пишет клас що реалізую інтерфейс:

і тепер у вашій спрінг конфігурації ви можете писати, отримуючи одразу абсолютний шлях інджектнутим в бін:

Ну і варіант з інджектанням дефолтного значення, коли воно не доступне серед пропертів:

Всі зазначені праиклади працюють також для конфігурацій через анотації.
Більше читаємо тут http://static.springsource.org/spring/docs/3.0.0.M3/reference/html/ch07.html

Bitnami