spring-cloud-config - Spring Cloud Config 组合存储库
问题描述
我试图将 Spring Cloud 配置服务器配置为使用复合配置,但出现了一个奇怪的错误。我究竟做错了什么?
1.原生配置文件
应用程序属性
server.port=8888
spring.profiles.active=native
spring.cloud.config.server.native.search-locations=file:///C:/tmp/config-repo
http://localhost:8888/app1/dev/ -> 获取加载的属性
2.复合配置文件(Native + custom)
应用程序属性
server.port=8888
spring.profiles.active=composite
spring.cloud.config.server.native.search-locations=file:///C:/tmp/config-repo
spring.cloud.config.server.plugins.search-locations=file:///C:/tmp/plugins-repo
错误: org.springframework.beans.factory.BeanCreationException:创建名为“org.springframework.boot.actuate.autoconfigure.EndpointAutoConfiguration”的bean时出错:通过构造函数实例化bean失败;嵌套异常是 org.springframework.beans.BeanInstantiationException:无法实例化 [org.springframework.boot.actuate.autoconfigure.EndpointAutoConfiguration$$EnhancerBySpringCGLIB$$271d7a4d]:构造函数抛出异常;嵌套异常是 org.springframework.beans.factory.UnsatisfiedDependencyException:在类路径资源 [org/springframework/cloud/config/server/config/EnvironmentRepositoryConfiguration.class] 中定义名称为“configServerHealthIndicator”的 bean 创建时出错:通过方法表示的不满足的依赖关系“ configServerHealthIndicator'参数0;嵌套异常是 org. springframework.beans.factory.UnsatisfiedDependencyException:创建名为“org.springframework.cloud.config.server.config.CompositeConfiguration”的bean时出错:通过方法“setEnvironmentRepos”参数0表示的不满足的依赖关系;嵌套异常是 org.springframework.beans.factory.BeanCreationException:在类路径资源 [org/springframework/cloud/config/server/config/DefaultRepositoryConfiguration.class] 中定义名称为“defaultEnvironmentRepository”的 bean 创建错误:调用 init 方法失败;嵌套异常是 java.lang.IllegalStateException: 您需要为 git 存储库配置一个 uri 通过方法 'setEnvironmentRepos' 参数 0 表示的不满足的依赖关系;嵌套异常是 org.springframework.beans.factory.BeanCreationException:在类路径资源 [org/springframework/cloud/config/server/config/DefaultRepositoryConfiguration.class] 中定义名称为“defaultEnvironmentRepository”的 bean 创建错误:调用 init 方法失败;嵌套异常是 java.lang.IllegalStateException: 您需要为 git 存储库配置一个 uri 通过方法 'setEnvironmentRepos' 参数 0 表示的不满足的依赖关系;嵌套异常是 org.springframework.beans.factory.BeanCreationException:在类路径资源 [org/springframework/cloud/config/server/config/DefaultRepositoryConfiguration.class] 中定义名称为“defaultEnvironmentRepository”的 bean 创建错误:调用 init 方法失败;嵌套异常是 java.lang.IllegalStateException: 您需要为 git 存储库配置一个 uri
PluginsEnvironmentRepository 返回一个环境,其中填充了在配置文件夹中存在的每个属性文件中找到的所有属性。这个类只是一个示例,所以我没有在应用程序/配置文件/标签参数上实现任何过滤器。
@ConfigurationProperties("spring.cloud.config.server.plugins")
public class PluginsEnvironmentRepository implements EnvironmentRepository, Ordered {
private int order = Ordered.LOWEST_PRECEDENCE;
private String searchLocations;
@Override
public Environment findOne(String application, String profile, String label) {
String[] profiles = StringUtils.commaDelimitedListToStringArray(profile);
Environment env = new Environment(application, profiles, label, null, null);
String[] locations = StringUtils.commaDelimitedListToStringArray(searchLocations);
for (String location : locations) {
File f = new File(URI.create(location));
if (f.exists() && f.isDirectory()) {
File[] propFiles = f.listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
return pathname.getName().endsWith(".properties");
}
});
for (File propFile : propFiles) {
env.add(new PropertySource(propFile.getName(), loadProperties(propFile)));
}
}
}
return env;
}
private Map<String, String> loadProperties(File f) {
....
}
@Override
public int getOrder() {
return order;
}
public String getSearchLocations() {
return searchLocations;
}
public void setSearchLocations(String searchLocations) {
this.searchLocations = searchLocations;
}
}
Spring Cloud 版本:Edgware.SR2
Spring Boot 版本:1.5.10.RELEASE
解决方案
推荐阅读
- javascript - 在这种情况下如何隐藏 HTML/JavaScript 代码?
- python - 使用 python-docx 从 docx 表中读取
- php - 升级 PHP 到 7.4 并没有找到 PDO
- sql - 表作为参数类型不正确
- ruby-on-rails - 如何修复警告 i18n spree?
- php - 用 mysqli_query 的结果替换数组中的值
- reactjs - 材质 UI 弹出框不适用于反应类组件
- android - 处理recyclerview适配器(Kotlin)中的按钮点击?
- google-sheets - 如何使用 Google Sheets API v4 获取超链接
- swift - 基本身份验证在 Alamofire Swift 中不起作用