Статическое содержимое Spring boot включает свойства профиля

#spring #spring-boot

Вопрос:

У меня есть статическая веб-страница в моем проекте Spring boot, на которой есть эта строка:

<redoc spec-url='http://localhost:8080/v2/api-docs'></redoc>

Как бы я сделал эту динамику на основе свойств профиля, я полагаю, что это было бы что-то в этом роде, но я не могу найти никакой документации в Интернете:

<redoc spec-url='${url}'></redoc>

Ответ №1:

AFAIK для этого вам нужно будет использовать механизм шаблонов (например, Thymeleaf).

Вот статья

В принципе, вы добавляете стартер в свой ПОМ Maven:

 <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
    <version>2.5.5.RELEASE</version>
</dependency>
 

(Используйте версию, соответствующую вашей версии весенней загрузки)

Если вы просто хотите вставить значения из файла свойств, содержащего пары «ключ-значение», стартер весенней загрузки автоматически настроит это.

Затем вы создаете файл messages.properties в папке «Ресурсы» и в свой HTML добавляете этот шаблон: <span th:text="#{welcome.message}" /> который будет отображать значение welcome.message в файле messages.properties.

Thymeleaf также позволяет создавать более сложные шаблоны.

Комментарии:

1. Вам не нужно указывать MessageSource пружинную загрузку, которая уже настраивает ту, которая выполняет именно то, что вы настраиваете.

2. Это не обязательно иметь шаблонизатор, это просто самый удобный способ.

3. О, есть ли способ использовать другую интерполяцию сообщений для статических ресурсов @Antoniossss? Не могли бы вы поделиться некоторыми подробностями, мне любопытно.

4. Вы можете перехватить запрос на ресурс и отфильтровать его вручную, по крайней мере, так я делал это в прошлом

5.@Каллум вам определенно не следует использовать для этого application.properties, потому что это содержит, ну, конфигурацию приложения, которую вы можете просочить во внешний мир, случайно используя неправильный ключ в своем шаблоне. В связанной статье описывается настройка a messageSource , там вы можете задать имя. Я бы рекомендовал вам хранить application.properties и ваши сообщения отдельно!