Не удалось создать экземпляр хранилища Spring Data ElasticSearch

Я пытаюсь запустить репозиторий Spring Data ElasticSearch, но у меня возникает следующая проблема при запуске приложения:

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userRepository': Initialization of bean failed; nested exception is java.lang.AbstractMethodError
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:564)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202)
at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.autowireResource(CommonAnnotationBeanPostProcessor.java:522)
at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.getResource(CommonAnnotationBeanPostProcessor.java:496)
at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor$ResourceElement.getResourceToInject(CommonAnnotationBeanPostProcessor.java:627)
at org.springframework.beans.factory.annotation.InjectionMetadata$InjectedElement.inject(InjectionMetadata.java:169)
at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88)
at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.postProcessPropertyValues(CommonAnnotationBeanPostProcessor.java:318)
... 41 more
Caused by: java.lang.AbstractMethodError
at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.getObjectFromFactoryBean(FactoryBeanRegistrySupport.java:99)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveInnerBean(BeanDefinitionValueResolver.java:302)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:129)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1531)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1276)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:553)
... 52 more

Я использую Maven для разрешения моих зависимостей, библиотеки проекта содержат spring-data-elasticsearch а также spring-data-commons из весеннего выпуска данных Lovelace-M1.

Я обрезал определение репозитория до его самого простого выражения:

public interface UserRepository
    extends ElasticsearchCrudRepository<User, String> {
}

Конфигурация выглядит так:

@Configuration
@EnableElasticsearchRepositories(basePackages = "my.company.dao", elasticsearchTemplateRef = "elasticSearchTemplate")
public class SearchConfiguration {

    @Bean
    public Client elasticSearchClient() throws UnknownHostException {

        TransportClient client = new PreBuiltTransportClient(Settings.EMPTY);
        client.addTransportAddress(new InetSocketTransportAddress(
                    InetAddress.getByName("my.elastic.host"), 9300));

        return client;
    }

    @Bean
    public ElasticsearchOperations elasticSearchTemplate() throws UnknownHostException {
        return new ElasticsearchTemplate(elasticSearchClient());
    }

}

У кого-нибудь была такая же проблема и, что более важно, как это можно решить?

1 ответ

Решение

Эта проблема была связана с тем, что я все еще использовал Spring Framework 4 вместо 5 (последнее является обязательным с момента выпуска релиза Kay в Spring Data).

Другие вопросы по тегам