Недоступный квалифицируемый компонент типа ru.spb.repository.UserRepository: ожидается как минимум 1 компонент, который квалифицируется как кандидат для автоматической передачи - PullRequest
1 голос
/ 14 февраля 2020

Класс репозитория:

 package ru.spb.repository.user;

@Repository
public class AnketUserRepository implements UserRepository {

     @Autowired
     private CrudUserRepository crudRepository;

 }

Интерфейс:

package ru.spb.repository;

public interface UserRepository {
}

Сервис:

package ru.spb.service;

@Service
public class UserService {

   private final UserRepository repository;

   @Autowired
   public UserService (UserRepository repository){
       this.repository = repository;
   }
}

Конфиги: в весеннем приложении. xml:

 <context:component-scan base-package="ru.spb.service"/> 

в spring-db. xml:

 <context:component-scan base-package="ru.spb.repository.user"/>

Но я ловлю следующее исключение:

 NoSuchBeanDefinitionException: No qualifying bean of type 'ru.spb.repository.UserRepository' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {}

Я пытался добавить @Repository в UserRepository- интерфейс, но безуспешно.

Ответы [ 3 ]

0 голосов
/ 14 февраля 2020

Сканирование компонента настроено только для пакета реализующего класса, но вы автоматически подключаете интерфейс, который находится в другом пакете (без сканирования компонентов).
Переместите аннотацию @Repository к интерфейсу и добавьте ru.spb.repository на ваш компонент сканирования

0 голосов
/ 14 февраля 2020

Я переместил

 <context:component-scan base-package="ru.spb.repository.user"/>  

из spring-db. xml в spring-app. xml. И эта проблема решена. Однако я не понимаю причину этой проблемы.

0 голосов
/ 14 февраля 2020

Вам необходимо также аннотировать интерфейс

package ru.spb.repository;

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