Свойства приложения помогают нам работать в разных средах. В этой главе вы узнаете, как настроить и указать свойства для приложения Spring Boot.
Свойства командной строки
Приложение Spring Boot преобразует свойства командной строки в свойства среды Spring Boot. Свойства командной строки имеют приоритет над другими источниками свойств. По умолчанию Spring Boot использует номер порта 8080 для запуска Tomcat. Давайте узнаем, как изменить номер порта с помощью свойств командной строки.
Шаг 1. После создания исполняемого файла JAR запустите его с помощью команды java –jar <JARFILE> .
Шаг 2 — Используйте команду, приведенную на снимке экрана ниже, чтобы изменить номер порта для приложения Spring Boot, используя свойства командной строки.
Примечание. С помощью разделителя можно указать несколько свойств приложения.
Файл свойств
Файлы свойств используются для того, чтобы хранить количество N свойств в одном файле для запуска приложения в другой среде. В Spring Boot свойства хранятся в файле application.properties под classpath.
Файл application.properties находится в каталоге src / main / resources . Код для примера файла application.properties приведен ниже —
server.port = 9090 spring.application.name = demoservice
Обратите внимание, что в коде, показанном выше, демосервис приложения Spring Boot запускается на порту 9090.
YAML файл
Spring Boot поддерживает конфигурации свойств на основе YAML для запуска приложения. Вместо application.properties мы можем использовать файл application.yml . Этот файл YAML также должен храниться внутри пути к классам. Пример файла application.yml приведен ниже —
spring: application: name: demoservice server: port: 9090
Внешние свойства
Вместо того, чтобы хранить файл свойств в classpath, мы можем хранить свойства в другом месте или пути. При запуске файла JAR мы можем указать путь к файлу свойств. Вы можете использовать следующую команду, чтобы указать расположение файла свойств при запуске JAR —
-Dspring.config.location = C:\application.properties
Использование аннотации @Value
Аннотация @Value используется для чтения значения свойства среды или приложения в коде Java. Синтаксис для чтения значения свойства показан ниже —
@Value("${property_key_name}")
Посмотрите на следующий пример, в котором показан синтаксис для чтения значения свойства spring.application.name в переменной Java с помощью аннотации @Value.
@Value("${spring.application.name}")
Соблюдайте приведенный ниже код для лучшего понимания —
import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @SpringBootApplication @RestController public class DemoApplication { @Value("${spring.application.name}") private String name; public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } @RequestMapping(value = "/") public String name() { return name; } }
Примечание. Если свойство не найдено во время работы приложения, Spring Boot создает исключение недопустимого аргумента как « Не удалось разрешить заполнитель« spring.application.name »в значении« $ {spring.application.name} » .
Чтобы решить проблему с заполнителями, мы можем установить значение по умолчанию для свойства, используя синтаксис thr, приведенный ниже —
@Value("${property_key_name:default_value}") @Value("${spring.application.name:demoservice}")
Spring Boot Active Profile
Spring Boot поддерживает различные свойства в зависимости от активного профиля Spring. Например, мы можем сохранить два отдельных файла для разработки и производства для запуска приложения Spring Boot.
Весенний активный профиль в приложении. Свойства
Давайте разберемся, как сделать Spring активным профилем в application.properties. По умолчанию приложение. Свойства будут использоваться для запуска приложения Spring Boot. Если вы хотите использовать свойства на основе профиля, мы можем сохранить отдельный файл свойств для каждого профиля, как показано ниже —
application.properties
server.port = 8080 spring.application.name = demoservice
application-dev.properties
server.port = 9090 spring.application.name = demoservice
application-prod.properties
server.port = 4431 spring.application.name = demoservice
При запуске файла JAR нам нужно указать активный профиль Spring на основе каждого файла свойств. По умолчанию приложение Spring Boot использует файл application.properties. Команда для установки активного профиля пружины показана ниже —
Вы можете увидеть имя активного профиля в журнале консоли, как показано ниже —
2017-11-26 08:13:16.322 INFO 14028 --- [ main] com.tutorialspoint.demo.DemoApplication : The following profiles are active: dev
Теперь Tomcat запущен на порту 9090 (http), как показано ниже —
2017-11-26 08:13:20.185 INFO 14028 --- [ main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 9090 (http)
Вы можете установить активный профиль производства, как показано ниже —
Вы можете увидеть имя активного профиля в журнале консоли, как показано ниже —
2017-11-26 08:13:16.322 INFO 14028 --- [ main] com.tutorialspoint.demo.DemoApplication : The following profiles are active: prod
Теперь Tomcat запущен на порту 4431 (http), как показано ниже —
2017-11-26 08:13:20.185 INFO 14028 --- [ main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 4431 (http)
Весенний активный профиль для application.yml
Давайте разберемся, как сохранить активный профиль Spring для application.yml. Мы можем сохранить свойства активного профиля Spring в одном файле application.yml . Нет необходимости использовать отдельный файл, такой как application.properties.
Ниже приведен пример кода для сохранения активных профилей Spring в файле application.yml. Обратите внимание, что разделитель (—) используется для разделения каждого профиля в файле application.yml.
spring: application: name: demoservice server: port: 8080 --- spring: profiles: dev application: name: demoservice server: port: 9090 --- spring: profiles: prod application: name: demoservice server: port: 4431
Команда для установки активного профиля приведена ниже —
Вы можете увидеть имя активного профиля в журнале консоли, как показано ниже —
2017-11-26 08:41:37.202 INFO 14104 --- [ main] com.tutorialspoint.demo.DemoApplication : The following profiles are active: dev
Теперь Tomcat запущен на порту 9090 (http), как показано ниже —
2017-11-26 08:41:46.650 INFO 14104 --- [ main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 9090 (http)
Команда для установки активного профиля производства приведена ниже —
Вы можете увидеть имя активного профиля в журнале консоли, как показано ниже —
2017-11-26 08:43:10.743 INFO 13400 --- [ main] com.tutorialspoint.demo.DemoApplication : The following profiles are active: prod
Это запустит Tomcat через порт 4431 (http), как показано ниже: