У меня есть приложение весенней загрузки.Я использую spring.profiles.include в application.yml для добавления некоторых активных профилей в соответствии с заданным профилем, затем я использую эти активные профили для создания бина, как показано ниже:
application.yml:
spring:
profiles: prod
profiles.include:
- enable_tls
- enable_mongo_ssl
Класс конфигурации - создание компонента в соответствии с активными профилями:
@Configuration
@PropertySource("classpath:/mongo-${mongo.environment}.properties")
public class MongoConfiguration {
@Bean
@Profile("enable_mongo_ssl")
public MongoClientOptions.Builder mongoClientOptionsBuilder() {
return getMongoClientOptionsBuilder();
}
Это прекрасно работает.Однако, когда я удаляю application.yml и использую внешнюю конфигурацию через Spring Cloud Config - с Git-репозиторием, это не работает.Активные профили являются только prod и не включают «enable_tls» и «enable_mongo_ssl», таким образом, при создании компонента утверждение:
@Profile("enable_mongo_ssl")
больше не соответствует действительности.
Когда я запрашиваюКонтроллер среды, я вижу профили enable_tls и enable_mongo_ssl:
"profiles": [
"prod"
],
"label": null,
"version": "2ddd208fff7caa48b2ae41d69020325ce61f241e",
"state": null,
"propertySources": [
{
"name": "file:///C://dev/config-repo/config/application-prod.yml",
"source": {
"spring.profiles.include[0]": "enable_tls",
"spring.profiles.include[1]": "enable_mongo_ssl",
"server.ssl.key-store-password": "ENC(xxx)",
}
}
Есть ли ограничения?Можем ли мы использовать spring.profiles.include во внешней конфигурации, а не в локальном файле application.yml?
Для информации я использую версию Finchley.SR3.
Мое текущее решение состоит в том, чтобыиметь все свойства, внешние для сервера конфигурации, кроме spring.profiles.include, оставшегося в файле classpath application.yml.