свойство spring.profiles.include из весеннего облачного конфига - PullRequest
1 голос
/ 16 мая 2019

У меня есть приложение весенней загрузки.Я использую 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.

1 Ответ

0 голосов
/ 24 июля 2019

Они не хотят осуществлять рекурсивный поиск профиля с сервера:

https://github.com/spring-cloud/spring-cloud-config/issues?q=is%3Aissue+spring.profiles.include

Просто перечислите все свои флаги функций (профили Spring) в bootstrap.yaml ((

...