задний план
Когда мы используем весеннюю загрузку для упаковки в нескольких средах, свойства конфигурации имеют разные значения в разных средах, а именно:
spring:
profiles:
active: @project.profile@ #根据maven 动态配置profile
---
spring:
profiles: dev
demo: lengleng_dev
---
spring:
profiles: prd
demo: lengleng_prd
Или используйте центр конфигурации весеннего облака (nacos/config) и т. д.
Затем есть такое же свойство конфигурации приложения, источник значения может исходить отФайлы конфигурации, переменные окружения, параметры запускаи Т. Д. Во многих случаях из-заСложность приведенной выше конфигурации, когда приложение считывает конфигурацию, не соответствует ожидаемому нами значению.Например, мы хотим использовать значение конфигурационного файла dev environment, но оно перезаписывается переменной окружения или другими данными и т. д. Такие часто бывают только при запуске, выходной лог может найти причину ошибки.
решение
Spring boot 2.3 Actuator обеспечивает/actuator/configprops
конечная точка (предыдущие версии также имели эту конечную точку, но поведение изменилось/actuator/env
Непротиворечивый) обеспечивает отслеживание свойств файла конфигурации,Нам удобно получать актуальное значение загрузки конфигурационного файла в режиме реального времени в приложении spring boot.
как пользоваться
- Ввести зависимости привода
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
- незащищенный
configprops
конечная точка
management:
endpoints:
web:
exposure:
include: 'configprops'
- Соответствующий класс конфигурации
@Data
@Component
@ConfigurationProperties("demo")
public class DemoConfig {
private String username;
private String password;
}
- Получите доступ к конечной точке, чтобы получить значение файла конфигурации в режиме реального времени.
Специальные инструкции
- configprops Endpoint будет десенсибилизировать конфиденциальные поля по умолчанию, классы ключевых слов по умолчанию
public class Sanitizer {
private static final String[] REGEX_PARTS = { "*", "$", "^", "+" };
private static final Set<String> DEFAULT_KEYS_TO_SANITIZE = new LinkedHashSet<>(Arrays.asList("password", "secret",
"key", "token", ".*credentials.*", "vcap_services", "sun.java.command"));
}
- Настройка персонализированных правил десенсибилизации
management:
endpoint:
configprops:
keys-to-sanitize:
- 'aaa'
- 'bbb'
- Когда значение свойства класса конфигурации пусто, доступ к нему осуществляется через /actuator/configprops, и это свойство не будет отображаться.
Суммировать
-
Конечная точка configprops соответствует классу ConfigurationPropertiesReportEndpoint.
PropertySource
Советы по настройке -
Сценарий приложения: CI должен использовать эту конечную точку, чтобы определить, соответствует ли конфигурация ожиданиям, перед выполнением модульных тестов и избежать бесполезных условий выполнения.
-
Приведенный выше исходный код может относиться к:GitHub.com/теория системы/весна…