2017-02-15 16 views
0

В моем проекте SpringBoot 1.5.1 я добавил следующую Maven зависимости:Spring загрузка 1.5.1, Spring Data MongoDB Нет квалификационный боба для хранилища

<dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-data-mongodb</artifactId> 
</dependency> 

и создал хранилище данных Spring MongoDB:

package com.example.domain.repository.decision.parameter; 

@Repository 
public interface CustomerRepository extends MongoRepository<DecisionAnalysisParameter, String> { 
} 

Это моя модель:

@Document(collection = "decision_analysis_parameter") 
public class DecisionAnalysisParameter implements Serializable { 

    private static final long serialVersionUID = 1493180175756424789L; 

    @Id 
    private String id; 

    @NotNull 
    private Long decisionId; 

    private Set<BaseQuery> characteristicFilterQueries; 

    private Set<Long> sortCriteriaIds; 

    private Direction sortWeightCriteriaDirection; 

    private Direction sortTotalVotesCriteriaDirection; 

    private Map<String, Double> sortCriteriaCoefficients; 

    private Long sortCharacteristicId; 

    private Direction sortCharacteristicDirection; 

    private String sortDecisionPropertyName; 

    private Direction sortDecisionPropertyDirection; 

    private Set<Long> excludeChildDecisionIds; 

    private Set<Long> includeChildDecisionIds; 

    private Long userId; 

    private Integer pageNumber; 

    private Integer pageSize; 

... 
} 

Сейчас я могу успешно внедрить

@Autowired 
private MongoTemplate mongoTemplate; 

и работать с коллекциями через этот объект.

Но мое приложение терпит неудачу, когда я пытаюсь внедрить:

@Autowired 
private CustomerRepository customerRepository; 

со следующим исключением:

Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.example.CustomerRepository' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)} 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoMatchingBeanFound(DefaultListableBeanFactory.java:1486) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1104) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1066) 
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:585) 
    ... 56 common frames omitted 

Это мои классы конфигурации:

@Configuration 
@ComponentScan("com.example") 
@EnableMongoRepositories(basePackages = "com.example.domain.repository") 
@SpringBootApplication 
public class TestConfig { 
} 

Кроме того, я использую Neo4j репозитории, которые работают нормально. Как это исправить?

ответ

1

Если вы используете несколько модулей Spring Data (Neo4J + MongoDB в вашем случае), вам необходимо установить строгую конфигурацию для обоих типов репозиториев. Например:

0

Похоже, что ваш CustomerRepository не в правильной упаковке. Его в настоящее время под com.example пакетом.

@EnableMongoRepositories(basePackages = "com.example.domain.repository") 

Перемещение хранилища, чтобы соответствовать basePackages из EnableMongoRepositories аннотацию или обновить значение аннотацию basePackage к CustomerRepository пакета.

 Смежные вопросы

  • Нет связанных вопросов^_^