Автоматизация Spring Cloud Profile - PullRequest
0 голосов
/ 14 февраля 2020

На самом деле есть небольшая проблема.

Я хочу переключить URL моего bootstrap .yml

Это выглядит следующим образом:

spring:
  application:
    name: <project-name>
  profiles:
    active: dev
  cloud:
    config:
      uri: http://<git-repository>:8080
      fail-fast: false

Это работает, но я хочу иметь свойство ie или что-либо, что может переключиться, если оно находится в локальной или другой среде.

Я пытаюсь просмотреть эту документацию, но не вижу никакой работы для меня.

Ответы [ 2 ]

0 голосов
/ 14 февраля 2020

Я бы определил файл bootstrap .yml в зависимости от среды.
Определил значение bootstrap .yml по умолчанию в src/main/resources и определил файл c bootstrap .yml для каждой среды.

Тогда есть несколько способов.
Не исчерпывающе:

1) Для каждой среды, в которой файл конфигурации отличается, запустите свой весенний загрузочный jar, указав системное свойство spring.cloud.bootstrap.location с помощью ожидаемое значение, например:
java -jar ... -Dspring.cloud.bootstrap.location=bootstrap-dev.yml ....
, которое переопределяет текущее местоположение этого файла.

2) Воспользуйтесь функцией профиля Spring Boot: bootstrap.yml совместим с. Например, если включен профиль разработчика, будет использоваться bootstrap-dev.properties в пути к классам.

Я склонен использовать первый способ, потому что это более явно для пользователей Spring Boot.

Источник: 1.3 Изменение местоположения Bootstrap Свойства

0 голосов
/ 14 февраля 2020

Я не думаю, что Spring Cloud отличается от любого приложения Spring, поэтому вы можете использовать профили Spring.

В этом ответе предлагается нечто подобное: { ссылка }.

Вы можете определить отдельный файл .yml только для вашей конфигурации облака, например cloud-config-dev.yml, cloud-config-prod.yml. Тогда для конфигурации Java вы можете получить что-то вроде:

@Configuration
public class MyApplicationConfiguration {

    @Bean
    public static PropertySourcesPlaceholderConfigurer propertyPlaceholderConfigurer() {
        String activeProfile = System.getProperty("spring.profiles.active", "production"); 
        String ymlFilename = "cloud-config-" + activeProfile + ".yml";

        PropertySourcesPlaceholderConfigurer configurer = new PropertySourcesPlaceholderConfigurer();
        configurer.setLocation(new ClassPathResource(ymlFilename));

        return configurer;
    }
}
...