Знания меняют судьбу, программирование делает меня счастливым, и я продолжу шагать в мире открытого исходного кода в 2020 году.
Ставьте лайк и смотрите снова, формируйте привычку
дай мне звезду,Нажмите, чтобы узнать о решении для посадки службы компонентного интерфейса на основе SpringBoot.
SpringBoot
обеспечивает внутреннюю конфигурациюapplication.yml
файл для глобальной конфигурации, а также поддерживает использованиеprofiles
Чтобы активировать использование разных файлов конфигурации в разных средах, и этот метод был упакован в конце концов, поэтому существуют определенные ограничения, такие как специальная конфиденциальная конфигурация базы данных, также может иметь риск утечки, как решить эту проблему? Давайте посмотрим на способы внешней настройки, о которых мы поговорим в этой главе! ! !
Рекомендуемое чтение
предисловие
SpringBoot
Предоставляет множество методов внешней настройки, в основном для облегчения запуска одного и того же кода в разных средах.
мы можем пройтиProperties文件
,YAML文件
,环境变量
,命令行参数
и т. д. для настройки, при получении значения конфигурации вы можете передать@Value
Аннотация для инъекций, вы также можете использовать@ConfigurationProperties
Аннотация сделанаИерархическая структураПривязать к полю класса сущности.
порядок загрузки
SpringBoot
Существует определенный порядок параметров конфигурации, разумеется, конфигурация атрибутов с одинаковыми именами будет существовать из-за приоритета загрузки.покрытие, в следующем порядке:
-
DevTools
Установить свойства глобально -
@TestPropertySource
аннотация -
properties
тестируемые свойства - аргументы командной строки
-
SPRING_APPLICATION_JSON
Конфигурация свойств (встроенные строки JSON, встроенные в переменные среды или системные свойства) -
ServletConfig
Параметры инициализации -
ServletContext
Параметры инициализации -
JNDI
Атрибутыjava:comp/env
- Свойства системы Java
- переменные среды операционной системы
- Файлы конфигурации упакованы внутри jar (
application.properties
а такжеYAML
документ) -
@PropertySource
аннотация - Свойства по умолчанию (через
SpringApplication.setDefaultProperties
настраивать)
Пример конфигурации
Мы выбираем несколько из вышеперечисленных, чтобы настроить вывод для тестирования, сначала создайте файл с именемLoadConfig
Класс конфигурации выглядит следующим образом:
/**
* 加载配置类
*
* @author 恒宇少年
*/
@Configuration
public class LoadConfig {
/**
* 配置读取name属性,不存在时使用空字符为默认值
*/
@Value("${name:''}")
private String name;
public String getName() {
return name;
}
}
существуетLoadConfig
В классе конфигурации мы добавляемname
поле, так как это поле использует@Value
аннотации, поэтому ее значение будет загружено из среды конфигурации с именемname
значение свойства (нет ограничений на то, как его можно настроить).
Чтобы облегчить демонстрацию, мы запускаем приложение, реализуяCommandLineRunner
Выводы интерфейса после успешного запускаname
значение ,SpringBootApplication
Код начального класса выглядит следующим образом:
/**
* 启动类入口
*/
@SpringBootApplication
public class SpringBootBasicExternalizedConfigurationApplication implements CommandLineRunner {
/**
* 注入配置类{@link LoadConfig}
*/
@Autowired
private LoadConfig loadConfig;
public static void main(String[] args) {
SpringApplication.run(SpringBootBasicExternalizedConfigurationApplication.class, args);
}
@Override
public void run(String... args) throws Exception {
System.out.println("name config value:" + loadConfig.getName());
}
}
Конфигурация YAML-файла
Это самый распространенный способ разработки приложений, просто нужноsrc/main/resources
Создайте каталог с именемapplication.yml
, а затем добавьте конфигурацию, соответствующую имени атрибута в файле, следующим образом:
# 配置name属性
name:
default
Если мы запустим приложение напрямую, оно выведет в консольname
ценностьdefault
.
Меры предосторожности:
application.yml
а такжеapplication.properties
Функции и приоритеты те же, но форма отображения конфигурации другая Лично я предпочитаюYAML
Форма документа явно иерархическая, читабельность выше.
Конфигурация переменной среды командной строки
в исполненииjava -jar
При запуске приложения вы можете добавитьSPRING_APPLICATION_JSON
конфигурация для пользовательской конфигурации атрибута, котораяJSON
В виде строки использование выглядит следующим образом:
SPRING_APPLICATION_JSON='{"name":"system_env"}' java -jar spring-boot-basic-externalized-configuration-0.0.1-SNAPSHOT.jar
**Результат выполнения:** Когда приложение включено таким образом, оно будет выведено в консоль.
name
ценностьsystem_env
.
Конфигурация параметров командной строки
Параметры командной строки также часто используются таким образом.--
Для настройки более распространенные команды--spring.profiles.active
, используется для изменения активации при запускеprofile
, и если мы хотим изменитьname
Значение конфигурации свойства выглядит следующим образом:
java -jar spring-boot-basic-externalized-configuration-0.0.1-SNAPSHOT.jar --name=hengboy
или использовать--spring.application.json
Режим также можно настроить следующим образом:
java -jar spring-boot-basic-externalized-configuration-0.0.1-SNAPSHOT.jar --spring.application.json='{"name":"hengboy"}'
**Результат выполнения: **Вышеупомянутые два метода могут быть использованы, и консоль выведет
name
ценностьhengboy
.
Конфигурация свойств системы Java
Java
При настройке через системные свойства используйте не только@Value
Вы можете получить значение атрибута, используяjava.lang.System#getProperty(java.lang.String)
также можно получить методом-D
Настройте его следующим образом:
java -Dname=JavaSystemConfig -jar spring-boot-basic-externalized-configuration-0.0.1-SNAPSHOT.jar
или использовать-Dspring.application.json
способ настройки (таким образом используйтеSystem.getProperty
метод не может получить значение свойства), следующим образом:
java -Dspring.application.json='{"name":"JavaSystemConfig"}' -jar spring-boot-basic-externalized-configuration-0.0.1-SNAPSHOT.jar
**Результат выполнения: **Запустите приложение двумя указанными выше способами, консоль выведет
name
ценностьJavaSystemConfig
.**Примечание. **Конфигурация свойств Java должна быть
-jar xxx.jar
Раньше конфигурация не могла прочитать значения свойств позже.
Суммировать
Различные способы настройки свойств, позволяющиеSpringBoot
Он стал настолько гибким, что если вам интересно, вы можете попробовать все вышеперечисленные методы настройки, и вы получите неожиданные результаты.
пример кода
Если вам понравилась эта статья, нажмите на репозиторий исходного кодаStar
,Спасибо! ! !
Образец исходного кода для этой статьи можно получить следующими способами.2.x
, каталогspring-boot-basic-externalized-configuration
:
- Гостиница:git ee.com/sh-wave-with/spr…
автор личноблогИспользуйте фреймворк с открытым исходным кодомApiBootПомочь вам стать архитектором сервисов интерфейса API