Статьи

Как использовать профили в приложении Spring Boot

Привет друзья,

В этом уроке мы узнаем, как мы можем использовать профили в приложении Spring Boot.

Приложение Spring Boot

Мы обсудим следующие моменты в этом уроке:

1. Что такое профиль весенней загрузки и почему нам нужно профилирование

2. Как выполнить профилирование в Spring Boot с примером

3. Как установить / изменить профиль по умолчанию

1. Что такое профиль весенней загрузки и почему нам нужно профилирование

Предположим, вы работаете с приложением Spring Boot. Вы протестировали приложение локально на своем компьютере, подключившись к локальной базе данных, которая установлена ​​на вашем компьютере. Теперь вы хотите развернуть это приложение в среде DEV, и у вас также есть сервер базы данных DEV. у вас есть база данных

Теперь, когда вы тестируете приложение локально, в вашем файле application.properties вы бы поместили такие данные, как url ​​базы данных, имя пользователя, пароль для локальной базы данных, которая установлена ​​на вашем компьютере, но как только вы перейдете в среду DEV, вы захотите Ваше приложение для общения с базой данных DEV, а не с локальной базой данных.

Таким образом, вы можете изменить файл application.properties, указав сведения, необходимые для подключения к базе данных DEV, зафиксировать код и развернуть его в DEV, но теперь проблема заключается в том, что этот код будет нормально подключаться к базе данных DEV, но когда вы попытаетесь выполнить этот код из локальной системы, он не будет работать, потому что вы изменили детали базы данных на базу данных DEV.

Итак, еще раз, чтобы заставить его работать на вашем локальном компьютере, вам нужно будет внести изменения в application.properties, которые требуются для локального и выполнения приложения.

Как вы можете видеть, здесь много суеты между местными и DEV.

Теперь представьте, что у вас есть больше сред, таких как ST, ET (QA), PROD, и вам нужно все время вносить изменения вручную. Это будет настоящий кошмар.

Так в чем же решение?

Весенние Профили Загрузки в Спасении!

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

Spring Boot Profiles позволяет вам настраивать несколько файлов application.properties для каждой среды, так что когда вы находитесь в локальной среде, он будет использовать локальный файл свойств, когда вы находитесь в DEV, он будет использовать файл свойств DEV и так далее, без вас как Программист должен внести какие-либо явные изменения в код.

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

Выглядит круто. Не правда ли 🙂

2. Как выполнить профилирование в Spring Boot с примером

2.1 Следуйте моему посту Как создать проект Spring Boot с помощью Spring Initializer и создать проект Spring Boot с именем «Springbootprofiles». Добавьте только веб-зависимость, так как этого будет достаточно для нашего тестирования.

2.2 В файле приложения .properties, который был автоматически создан Spring intializer, добавьте следующую строку:
application.environment = Это локальная среда

2.3 Запустите приложение, нажав на проект и выбрав Запуск от имени -> Выполнить настройки -> Выполнить

2.4 Проверьте журналы консоли, созданные Spring boot

Вы увидите следующую строку в журналах

2019-07-07 20: 00: 52.147 ИНФОРМАЦИЯ 15560 — [main] cbjsSpringbootprofilesApplication: активный профиль не установлен, откат к профилям по умолчанию: по умолчанию

Что в основном говорит о том, что мы не установили какой-либо профиль явно, поэтому Spring Boot использует профиль по умолчанию, что означает, что Spring Boot использует конфигурации из файла application.properties.

Как мы можем это проверить?

Давайте посмотрим на следующие шаги.

2.5 Создайте контроллер с именем ProfileController.java следующим образом:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package com.blogspot.javasolutionsguide.springbootprofiles.controller;
 
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
 
/**
 * @author javaSolutionsGuide
 *
 */
@RequestMapping("/v1")
@RestController
public class ProfileController {
  
 @Value("${application.environment}")
 private String applicationEnv;
  
 @GetMapping
 public String getApplicationEnv() {
  return applicationEnv;
 }
 
}

Здесь, в основном, мы пытаемся получить доступ к свойству application.environment, определенному в файле application.properties в нашем контроллере, используя аннотацию @Value, так что когда мы получим URI этого ресурса из браузера, мы должны получить «Это местная среда».

2.6. Давайте снова запустим приложение, щелкнув проект и выбрав «Запуск от имени» -> «Выполнить конфигурации» -> «Выполнить», а затем фактически ударим по URI ресурса (
http: // localhost: 8080 / v1 ) и посмотрите, возвращает ли оно ожидаемое значение из файла application.properties.

Так что он работает, как ожидалось.

Вывод: когда мы не устанавливаем какой-либо профиль в нашем приложении весенней загрузки, по умолчанию он выбирает профиль по умолчанию, который является ничем иным, как файлом application.properties по умолчанию.

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


2.7 Теперь предположим, что вы хотите развернуть свой код в среде DEV, чтобы вы хотели, чтобы ваше приложение выбирало специфические свойства DEV, когда приложение работает в среде DEV, и свойства, специфичные для среды LOCAL, когда приложение работает в локальной системе.

Для этого нам нужно создать еще один файл свойств с именем application-dev.properties. В общих правилах именования это application- {имя профиля} .properties ‘

Где имя профиля обычно является именем среды, но это может быть любой текст.

2.8 Добавим следующую строку в файл application-dev.properties
application.environment = Это среда разработки

2.9 Теперь, как указать приложению использовать профиль dev вместо профиля по умолчанию.

Для этого нам нужно установить переменную окружения «spring.profiles.active», как показано ниже:

spring.profiles.active = dev

Чтобы установить это, щелкните правой кнопкой мыши на проекте, выберите «Запуск от имени» -> «Выполнить настройки» -> «Среда» -> «Создать» -> «Добавить имя как spring.profiles.active» и «Значение как от разработчика» -> нажмите «ОК» -> «Выполнить».

2.10 Если вы сейчас проверите логи, вы найдете следующую строку в логах:

2019-07-07 20: 22: 08.557 ИНФОРМАЦИЯ 17172 — [main] cbjsSpringbootprofilesApplication: следующие профили активны: dev

Что показывает, что профиль Dev активен сейчас.

2.11. Давайте на самом деле протестируем и посмотрим, выбирает ли наш контроллер значение из application-dev.properties

2.12 Нажмите URI ресурса ( http: // localhost: 8080 / v1 ) и просмотрите результат в браузере.

И ясно, что это время было выбрано из файла application-dev.properties.

Вывод: у нас может быть n файлов свойств в нашем приложении весенней загрузки для n сред, которые будут иметь конфигурации, специфичные для этой среды. Все, что нам нужно сделать, чтобы использовать файл свойств в соответствующей среде, это установить spring.profiles. Свойство .active для этой среды и весенняя загрузка выберут соответствующий файл свойств.

3. Как установить / изменить профиль по умолчанию

Как мы видели выше, по умолчанию весенняя загрузка выбирает профиль по умолчанию, что означает, что он выбирает файл application.properties. Что, если вместо этого мы хотим сделать dev нашим профилем по умолчанию.

В этом случае все, что вам нужно сделать, это удалить spring.profiles.active и установить свойство spring.profiles.default в профиль, который мы хотим установить в качестве профиля по умолчанию в качестве переменной среды в eclipse.

spring.profiles.default = dev

Теперь, если вы перезапустите приложение, вы увидите следующую строку в журналах консоли:

2019-07-07 20: 35: 23.587 ИНФОРМАЦИЯ 16832 — [main] cbjsSpringbootprofilesApplication: активный профиль не установлен, откат к профилям по умолчанию: dev

Таким образом, из логов видно, что dev теперь рассматривается как профиль по умолчанию.

Мы можем проверить дальше, нажав наш ресурс URI ( http: // localhost: 8080 / v1 )

Вывод: если мы не устанавливаем какой-либо профиль в качестве профиля по умолчанию, то по умолчанию весенняя загрузка выберет конфигурации из файла application.properties. Если вы хотите настроить другие конфигурации среды по умолчанию, вы можете установить для свойства spring.profiles.default значение эта среда и

Spring Boot выберет это свойство среды, даже если spring.profiles.active не установлен

Спасибо за чтение. Пожалуйста, поделитесь этим с кем-то, вы думаете, это может быть полезно.

Опубликовано на Java Code Geeks с разрешения Гаурава Бхардваджа, партнера нашей программы JCG . Смотрите оригинальную статью здесь: Как использовать профили в Spring Boot Application

Мнения, высказанные участниками Java Code Geeks, являются их собственными.