Композитные репозитории Spring Cloud Config - PullRequest
0 голосов
/ 27 июня 2018

Я пытался настроить сервер конфигурации Spring Cloud для использования составной конфигурации, но получил странную ошибку. Что я делаю не так?

1. Родной профиль

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. Композитный профиль (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

Ошибка: org.springframework.beans.factory.BeanCreationException: Ошибка при создании компонента с именем org.springframework.boot.actuate.autoconfigure.EndpointAutoConfiguration ': не удалось создать экземпляр компонента с помощью конструктора; вложенным исключением является org.springframework.beans.BeanInstantiationException: не удалось создать экземпляр [org.springframework.boot.actuate.autoconfigure.EndpointAutoConfiguration $$ EnhancerBySpringCGLIB $$ 271d7a4d] исключение: конструктор вложенным исключением является org.springframework.beans.factory.UnsatisfiedDependencyException: ошибка создания бина с именем 'configServerHealthIndicator', определенным в ресурсе пути к классу [org / springframework / cloud / config / server / config / EnvironmentRepositoryConfiguration.class]: метод не удовлетворен через выраженную зависимость configServerHealthIndicator 'параметр 0; вложенное исключение - org.springframework.beans.factory.UnsatisfiedDependencyException: ошибка при создании bean-компонента с именем org.springframework.cloud.config.server.config.CompositeConfiguration ': несогласованная зависимость, выражаемая с помощью метода' setEnvironmentRepos ', параметр 0; вложенным исключением является org.springframework.beans.factory.BeanCreationException: ошибка при создании компонента с именем 'defaultEnvironmentRepository', определенным в ресурсе пути к классу [org / springframework / cloud / config / server / config / DefaultRepositoryConfiguration.class]: сбой вызова метода init; Вложенное исключение - java.lang.IllegalStateException: вам необходимо настроить URI для репозитория git

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. ВЫПУСК

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...