我试图配置spring cloud配置服务器以使用复合配置,但我得到了一个奇怪的错误 . 我究竟做错了什么?
1. Native profile
application.properties
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. Composite profile (Native + custom)
application.properties
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
Error: 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:创建名为'defaultEnvironmentRepository'的bean在类路径资源[org / springframework / cloud / config / server / config / DefaultRepositoryConfiguration.class]中定义时出错: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