java - Spring cloud config searchPaths vs repo目录结构
问题描述
我正在尝试使用 Git(Bitbucket)上的远程存储库运行 Spring Cloud Config 服务器(集中配置服务)。但无论我在 application.properties 中设置什么 searchPaths,它总是返回空数组而不是存储库中的值。
所以,我的存储库看起来像这样(在 master 分支上):
app1/ (dir)
app1.yml
app1-test.yml
app1-uat.yml
...
app2/ (dir)
app2.yml
app2-test.yml
app2-uat.yml
...
我的 src/main/resources/application.properties:
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
src\main\java\example\centralizedconfigurationservice\ConfigServer.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":[]}
任何人都知道我应该设置什么 searchPaths 让它工作?
解决方案
我通过从 application.properties 切换到 application.yml 并设置来使用它:
spring:
cloud:
config:
server:
git:
uri: ...
searchPaths:
- '*/**'
推荐阅读
- kotlin - Recycler View为空时如何显示TextView?
- lua - 如何使用 Pktgen 生成 64B 数据包大小的 100Mpps 流量?
- kotlin - 操作系统组作为参数
- awk - 链 awk 正则表达式匹配,如 grep
- text - 软件工程文本的情感分析
- python - 我想在 python 上实现 Modified Gram-schmidt
- java - 在 Android 中插入 datetime.now SQLite
- python - '[5, 6, 7] 不一定与 list((5, 6, 7)) 相同?
- swift - UItextfield 文本覆盖 Swift 中文本字段中的清除按钮
- python - 在创建数组数组时与 numpy 广播不一致的行为