В этом блоге в основном объясняется, как получить значение файла конфигурации в Spring Boot.
1. Используйте файл конфигурации yaml
Файл конфигурации, сгенерированный Spring Boot по умолчанию, — это application.properties, но он также поддерживает файлы конфигурации на языке yaml.
Разница между ними не очень велика, но иерархия конфигурационных файлов языка yaml более очевидна и читабельна, поэтому в настоящее время используется больше.
Мы предполагаем, что исходная конфигурация application.properties такова:
spring.main.banner-mode=off
Итак, как переключить файл конфигурации на application.yml?
Сначала удалите исходный файл конфигурации application.properties и добавьте новый файл конфигурации application.yml.Новый метод выглядит следующим образом:
Затем измените application.yml на:
spring:
main:
banner-mode: "off"
Текущий результат такой же, как и при первоначальном использовании файла конфигурации свойств.
2. Используйте аннотацию @Value, чтобы получить значение файла конфигурации.
Сначала добавьте следующую конфигурацию в application.yml:
book:
author: wangyunfei
name: spring boot
Затем измените код класса запуска на:
package com.zwwhnly.springbootaction;
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;
@RestController
@SpringBootApplication
public class SpringbootActionApplication {
@Value("${book.name}")
private String bookName;
@Value("${book.author}")
private String bookAuthor;
@RequestMapping("/")
public String index() {
return "book name is:" + bookName + " and book author is:" + bookAuthor;
}
public static void main(String[] args) {
SpringApplication.run(SpringbootActionApplication.class, args);
}
}
Запустите проект, введите в браузере http://localhost:8080/, вы увидите следующую информацию:
Этот метод такой же, как и в проекте Spring.Для получения более подробной информации вы можете проверить блог, который я резюмировал ранее:
Начало работы с Spring (9): внедрение значений во время выполнения.
3. Используйте аннотацию @ConfigurationProperties, чтобы получить значение файла конфигурации.
Spring Boot также предоставляет@ConfigurationProperties
Аннотация для получения значения файла конфигурации. Этот метод может автоматически связать значение файла конфигурации с bean-компонентом, что более удобно и безопасно для типов.Рекомендуется использовать этот способ.
Сначала добавьте следующую конфигурацию в application.yml:
author:
name: wangyunfei
age: 32
Затем создайте новый класс AuthorSettings, добавьте@Component
аннотации и@ConfigurationProperties
аннотация:
package com.zwwhnly.springbootaction;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Component
@ConfigurationProperties(prefix = "author")
public class AuthorSettings {
private String name;
private Integer age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
Дело в том, что@ConfigurationProperties
Annotation, его атрибут префикса используется для указания префикса конфигурации, такого как автор в этом примере.
Затем измените код класса запуска на:
package com.zwwhnly.springbootaction;
import org.springframework.beans.factory.annotation.Autowired;
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;
@RestController
@SpringBootApplication
public class SpringbootActionApplication {
@Autowired
private AuthorSettings authorSettings;
@RequestMapping("/")
public String index() {
return "author name is " + authorSettings.getName() + " and author age is " + authorSettings.getAge();
}
public static void main(String[] args) {
SpringApplication.run(SpringbootActionApplication.class, args);
}
}
Запустите проект, введите в браузере http://localhost:8080/, вы увидите следующую информацию:
4. Используйте профиль для управления конфигурацией в нескольких средах.
В обычных условиях приложения, которые мы разрабатываем, будут иметь несколько сред, таких как среда разработки, среда контроля качества и среда производства, так как же реализовать управление конфигурацией в нескольких средах?
Фактически, в Spring Boot мы можем использовать Profile для его реализации.Далее мы объясним конкретный метод реализации.
Сначала создайте два новых файла конфигурации: application-dev.yml, application-prod.yml.
Структура проекта на данный момент показана на следующем рисунке:
Если некоторые учащиеся предпочитают использовать файл свойств, они могут создать новый, как показано на следующем рисунке:
По умолчанию номер порта запуска — 8080. Если мы хотим использовать номер порта 8082 в среде разработки и номер порта 8083 в среде производства, мы можем изменить файл конфигурации следующим образом:
В application-dev.yml добавляется следующая конфигурация:
server:
port: 8082
В application-prod.yml добавляется следующая конфигурация:
server:
port: 8083
Запустите проект, как показано ниже:
Мы обнаружим, что номер порта по умолчанию 8080 все еще используется, так как же указать порт, который использует среду dev или prod?
Нам нужно добавить следующую конфигурацию в application.yml:
spring:
profiles:
active: dev
На этом этапе, когда вы снова запустите проект, вы обнаружите, что используется номер порта 8082, который настроен в файле application-dev.yml.
Если вы хотите использовать среду prod, вы можете изменить конфигурацию следующим образом:
spring:
profiles:
active: prod
Текущий результат:
Что касается использования профиля в проектах Spring, вы можете просмотреть мой предыдущий обзор блога:Введение в Spring (7): объяснение использования Spring Profile.
5. Исходный код и ссылка
Адрес источника:GitHub.com/Где находится Ухань/SPR…, добро пожаловать на скачивание.
Ван Юньфэй, «Разрушитель разработки Java EE: Spring Boot в действии»
SpringBoot — использование и переключение нескольких профилей