Конфигурация Spring cloud Пути поиска и структура каталогов репо

#java #spring #spring-boot #spring-cloud-config

Вопрос:

Я пытаюсь запустить сервер конфигурации Spring Cloud (централизованная служба конфигурации) с удаленным репозиторием на Git (Bitbucket). Но независимо от того, какие пути поиска я задаю в application.properties, он всегда возвращает пустой массив вместо значений в репозитории.

Итак, мой репозиторий выглядит так (в главной ветке):

 app1/ (dir)
  app1.yml
  app1-test.yml
  app1-uat.yml
  ...
app2/ (dir)
  app2.yml
  app2-test.yml
  app2-uat.yml
  ...
 

Мой src/основной/ресурсы/приложение.свойства:

 server.port=8888
spring.cloud.config.server.git.uri=https://bitbucket.repo.url/repo.git
spring.cloud.config.server.git.cloneOnStart=true
spring.cloud.config.server.git.force-pull=true
spring.cloud.config.server.git.skipSslValidation=true
spring.cloud.config.server.git.username=repo_login
spring.cloud.config.server.git.password=repo_pass
spring.cloud.config.server.git.searchPaths='{application]' # Tried also '{application}/{application}-{profile}' and '{application}/{application}-{profile}.yml'
spring.security.user.name=config_user
spring.security.user.password=config_pass
 

srcmainjavaexamplecentralizedconfigurationserviceConfigServer.java:

 package example.centralizedconfigurationservice;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.config.server.EnableConfigServer;

@SpringBootApplication
@EnableConfigServer
public class ConfigServer {
    
    public static void main(String[] arguments) {
        SpringApplication.run(ConfigServer.class, arguments);
    }
}
 

pom.xml:

 <?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.5.2</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>example</groupId>
    <artifactId>centralized-configuration-service</artifactId>
    <version>1.0.0</version>
    <name>centralized-configuration-service</name>
    <description>Desc...</description>
    <properties>
        <java.version>11</java.version>
        <spring-cloud.version>2020.0.3</spring-cloud.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-config-server</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-web</artifactId>
        </dependency>
    
   <dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-test</artifactId>
     <version>2.1.7.RELEASE</version>
   </dependency>
 </dependencies>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <version>3.1.0</version>
            </plugin>  
        </plugins>
    </build>
</project>

 

Я начинаю сервер с mvnw

 ./mvnw spring-boot:run
 

журналы со стартового сервера:

   .   ____          _            __ _ _
 /\ / ___'_ __ _ _(_)_ __  __ _    
( ( )___ | '_ | '_| | '_ / _` |    
 \/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |___, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::                (v2.5.2)

2021-07-20 13:51:32.444  INFO 35 --- [           main] p.c.p.n.c.ConfigServer                   : Starting ConfigServer using Java 11.0.1 on 67421f38de7b with PID 35 (/app/target/classes started by root in /app)
2021-07-20 13:51:32.449  INFO 35 --- [           main] p.c.p.n.c.ConfigServer                   : No active profile set, falling back to default profiles: default
2021-07-20 13:51:33.311  INFO 35 --- [           main] o.s.cloud.context.scope.GenericScope     : BeanFactory id=3aa36d2a-4db1-39bb-8278-6d749acb1c11
2021-07-20 13:51:33.582  INFO 35 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8888 (http)
2021-07-20 13:51:33.594  INFO 35 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2021-07-20 13:51:33.594  INFO 35 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.48]
2021-07-20 13:51:33.693  INFO 35 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2021-07-20 13:51:33.693  INFO 35 --- [           main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 1151 ms
2021-07-20 13:51:34.124  INFO 35 --- [           main] o.s.s.web.DefaultSecurityFilterChain     : Will secure any request with [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@228bda54, org.springframework.security.web.context.SecurityContextPersistenceFilter@5de5e95, org.springframework.security.web.header.HeaderWriterFilter@314b9e4b, org.springframework.security.web.csrf.CsrfFilter@40d23c82, org.springframework.security.web.authentication.logout.LogoutFilter@34c70b5e, org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter@42383cb0, org.springframework.security.web.authentication.ui.DefaultLoginPageGeneratingFilter@4f2d995e, org.springframework.security.web.authentication.ui.DefaultLogoutPageGeneratingFilter@75b6dd5b, org.springframework.security.web.authentication.www.BasicAuthenticationFilter@d2e6b0b, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@303c55fa, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@7c2924d7, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@b3e86d5, org.springframework.security.web.session.SessionManagementFilter@51dae791, org.springframework.security.web.access.ExceptionTranslationFilter@949c598, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@7316523a]
2021-07-20 13:51:35.979  INFO 35 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8888 (http) with context path ''
2021-07-20 13:51:36.000  INFO 35 --- [           main] p.c.p.n.c.ConfigServer                   : Started ConfigServer in 4.043 seconds (JVM running for 4.525)
 

и когда я попытаюсь получить ‘http://localhost:8888/app1/test я получаю (после входа в систему):

 {"name":"app1","profiles":["test"],"label":null,"version":"f4e9867b34eacdc03bbd5478c12cf64fbadcb867","state":null,"propertySources":[]}
 

Кто-нибудь знает, какие пути поиска я должен задать, чтобы заставить его работать?

Ответ №1:

Я заставил его работать, переключившись с application.properties на приложение.yml и настройка:

 spring:
  cloud:
    config:
      server:
        git:
          uri: ...
          searchPaths:
            - '*/**'