#spring #spring-boot #spring-el
#spring #spring-boot #spring-el
Вопрос:
Я пытаюсь получить значение для свойства в моем приложении.файл конфигурации yml, использующий выражение Spring SpEL, но, похоже, выражение не вычисляется. Вот мое приложение.фрагмент yml:
spring:
profiles: local
cloud.client.hostname: abc.pqr.xyz.lmn.westus.env.company.com
boot:
admin:
client:
instance:
metadata.tags.environment: local
metadata.tags.dc: "#{'${spring.cloud.client.hostname}'.split('.')[4]}"
url: http://localhost:8079
Во время выполнения свойство spring.boot.admin.client.instance.metadata.tags.dc
оценивается до abc.pqr.xyz.lmn.westus.env.company.com.split('.')[4]
, и ожидается, что оно будет оценено до westus
.
Чего я не понимаю?
Комментарии:
1. обычно в Java
split()
в качестве входных данных используется регулярное выражение, а не отдельный символ. возможно,'.'
требуется экранирование. попробуйте с.split('\.')
Ответ №1:
SpEL не поддерживается в application.yml
.
Вместо этого используйте @Value("#{'${spring.cloud.client.hostname}'.split('\.')[4]}" ) String property
в коде.