Учебники

Spring Boot — Свойства приложения

Свойства приложения помогают нам работать в разных средах. В этой главе вы узнаете, как настроить и указать свойства для приложения Spring Boot.

Свойства командной строки

Приложение Spring Boot преобразует свойства командной строки в свойства среды Spring Boot. Свойства командной строки имеют приоритет над другими источниками свойств. По умолчанию Spring Boot использует номер порта 8080 для запуска Tomcat. Давайте узнаем, как изменить номер порта с помощью свойств командной строки.

Шаг 1. После создания исполняемого файла JAR запустите его с помощью команды java –jar <JARFILE> .

Шаг 2 — Используйте команду, приведенную на снимке экрана ниже, чтобы изменить номер порта для приложения Spring Boot, используя свойства командной строки.

Свойства командной строки JARFILE

Примечание. С помощью разделителя можно указать несколько свойств приложения.

Файл свойств

Файлы свойств используются для того, чтобы хранить количество 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. Команда для установки активного профиля пружины показана ниже —

Prod.Properties Active Dev

Вы можете увидеть имя активного профиля в журнале консоли, как показано ниже —

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

Команда для установки активного профиля приведена ниже —

Prod.Properties Active Dev

Вы можете увидеть имя активного профиля в журнале консоли, как показано ниже —

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), как показано ниже: