Bootstrap.yml не загружается в Spring Boot 2

У меня возникла проблема при запуске клиентского приложения с весенней загрузкой, которому необходимо подключиться к серверу конфигурации. Файл bootstrap.yml игнорируется

Сервер конфигурации - это работает!

server:
  port: 8888  

spring:
  application:
    name: configserver
  cloud:
    config:
      server:
       git:
         uri:https://[email protected]/eco/properties.git

bootstrap.yml - Клиент конфигурации - Не работает!

spring:
  application:
    name: api
  cloud:
    config:
     uri: http://localhost:8888

Файл bootstrap.yml игнорируется при запуске приложения.

POM Клиент

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.2.RELEASE</version>
</parent>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>Finchley.RC2</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

<properties>
    <java.version>1.8</java.version>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <spring-cloud.version>2.0.0.RC2</spring-cloud.version>
</properties>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-eureka</artifactId>
        <version>1.4.4.RELEASE</version>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>

    <!-- Database dependencies -->
    <dependency>
        <groupId>com.oracle.jdbc</groupId>
        <artifactId>ojdbc7</artifactId>
        <version>12.1.0.2</version>
        <scope>system</scope>
        <systemPath>${basedir}/src/main/resources/lib/ojdbc7-12.1.0.2.jar</systemPath>
    </dependency>

    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger2</artifactId>
        <version>2.9.0</version>
    </dependency>

    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger-ui</artifactId>
        <version>2.9.0</version>
    </dependency>

    <dependency>
        <groupId>org.mockito</groupId>
        <artifactId>mockito-all</artifactId>
        <version>1.10.19</version>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-properties-migrator</artifactId>
        <scope>runtime</scope>
    </dependency>
</dependencies>

<build>
    <finalName>api-emissor</finalName>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <version>1.3.5.RELEASE</version>
        </plugin>

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>${java.version}</source>
                <target>${java.version}</target>
            </configuration>
        </plugin>
    </plugins>
</build>

Клиент основного класса

@SpringBootApplication
@EnableEurekaClient
@EnableAutoConfiguration(exclude = {SecurityAutoConfiguration.class})
@ComponentScan("br.com.eco.api.emissor")
@EnableJpaRepositories("br.com.eco.api.emissor.repository")
@EntityScan("br.com.eco.api.emissor.domain")
public class Application {

public static void main(final String[] args) {
    SpringApplication.run(Application.class, args);
}

}

Почему игнорируется bootstrap.yml?

Вы не можете смешивать версии весеннего облака. Вы используете старую версию весеннего облака Netflix eureka

spencergibb 12.06.2018 18:04

Как вы думаете, это может быть моей проблемой?

Renan Lalier 12.06.2018 20:24

Может быть, но пока у вас нет действительных версий, я не могу сказать.

spencergibb 12.06.2018 23:04
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
12
3
15 086
7

Ответы 7

Вам необходимо указать имя конфигурации, и оно должно совпадать с именем файла конфигурации в службе конфигурации.

spring:
    cloud:
       config:
          name: myService    # myService.yml or myService-[profile].yml( if you have a profile activated).
           uri: http://localhost:8888

Вам нужно добавить зависимость для Spring Cloud Starter.

Если вы определили spring.config.location, он переопределит все пути к файлам конфигурации, включая путь к bootstrap.yml, поэтому вам придется изменить spring.config.location на spring.config.additional-location.

Поэтому, когда вы запустите свое приложение, вам нужно будет добавить -Dspring.config.additional-location=/path/to/application.yml.

Для получения дополнительной информации проверьте это

это зависимость, которую вы должны добавить

<dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-config-server</artifactId>
    </dependency>

В моем случае я использую STS4, и созданный файл POM по умолчанию не работает, и у меня была такая же проблема, как и у вас, но после того, как я немного изменил свой файл POM, все работает, и, наконец, я нашел что-то вроде «Получение конфигурации с сервера "в моей консоли. Изменения в моем POM были следующими:

  1. Измените версию весенней загрузки на 2.2.6.RELEASE.
  2. Измените версию весеннего облака на Hoxton.SR6 или Hoxton.SR4 (и я считаю, что любой Версия Hoxton будет работать).

После того, как я применил предыдущие изменения, мой файл POM выглядит так:

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <!-- <version>2.4.0</version> -->
        <version>2.2.6.RELEASE</version>
        <relativePath /> <!-- lookup parent from repository -->
    </parent>
    <groupId>net.kha.microservices</groupId>
    <artifactId>limits-service</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>limits-service</name>
    <description>Demo project for Spring Boot - Cloud</description>

    <properties>
        <java.version>1.8</java.version>
        
        <!-- <spring-cloud.version>2020.0.0-SNAPSHOT</spring-cloud.version> -->
        <!-- <spring-cloud.version>2020.0.0-M4</spring-cloud.version> -->
        
        <!--  Both are working with spring boot version 2.2.6.RELEASE 
              you should find something like "Fetching config from server at" in your console 
              each time you run the client project as spring boot app 
        -->
        <spring-cloud.version>Hoxton.SR6</spring-cloud.version>
        <!-- <spring-cloud.version>Hoxton.SR4</spring-cloud.version> -->    
    </properties>

Добавьте эту зависимость в клиент конфигурации весенней загрузки:

<dependency>
 <groupId>org.springframework.cloud</groupId>
 <artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>

Я только обнаружил, что мое приложение не считывает мою загрузку с помощью truss в моем приложении. Это предложение устранило проблему.

Dave 30.01.2021 21:17

Это действительно решает проблему с моей стороны. Не то, что зарождается в весенних облаках.

Abbadon 15.06.2021 15:56

Приложение будет использовать bootstrap.yml в случае, если оно использует какие-то зависимости Spring-Cloud. Это может быть клиент облачного обнаружения

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    </dependency>

или клиент облачной конфигурации

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-config-client</artifactId>
    </dependency>

Другие вопросы по теме