2016-03-12 5 views
-1

Я довольно новичок в весне, и в настоящее время я следую учебному курсу о том, как использовать службы и репозитории вместе с @autowired, но после выполнения каждого шага он, похоже, не работает меня. Из чтения ошибки, которую я получаю, я вижу, что инъекция компонента с помощью @Autowired не работает для класса сервиса, который я создал, потому что он не находит класс с соответствующими критериями.Инъекция компонента с @Autowired не работает

Это мой служебный интерфейс .

public interface ArtistService { 

void save(Artist artist); 

Artist get(int id); 

void remove(Artist artist); 

List<Artist> findAll(); 
} 

Это мой класс, реализующий мой интерфейс сервиса

@Service 
public class ArtistServiceImpl implements ArtistService { 

ArtistRepository artistRepository; 

@Autowired 
public ArtistServiceImpl(ArtistRepository artistRepository) { 
    this.artistRepository = artistRepository; 
} 

(методы интерфейса реализованы, но опущены, чтобы сохранить этот компактный)

И мой загрузки приложения

@SpringBootApplication 
public class JdbcTutorialApplication implements CommandLineRunner { 

@Autowired 
ArtistService artistService; 
@Autowired 
ArtistRepository artistRepository; 

} 

@Autowired также не работает для репозитория, который я пытаюсь добавить, но в основном это то же самое, что и это, но это репозиторий.

Ниже приводится первая строка ошибки я получаю

 org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jdbcTutorialApplication': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: ie.cit.oossp.service.ArtistService ie.cit.oossp.JdbcTutorialApplication.artistService; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'artistServiceImpl' defined in file [C:\Users\Sean\Documents\College\3rd Year\OOSSP\STSWorkspace\JdbcTutorial\target\classes\ie\cit\oossp\service\ArtistServiceImpl.class]: Unsatisfied dependency expressed through constructor argument with index 0 of type [ic.cit.oossp.repository.ArtistRepository]: No qualifying bean of type [ic.cit.oossp.repository.ArtistRepository] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {}; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [ic.cit.oossp.repository.ArtistRepository] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {} 
+1

Создайте bean-компонент, который является типом ArtistRepository и повторите попытку. – JToddler

+1

У вас есть в контексте вашего приложения? – nnunes10

+0

@JToddler У меня есть класс репозитория, структурированный в основном таким же, как мой класс обслуживания, но с тегом репозитория вместо – Sean

ответ

0

Убедитесь, что ваш ArtistRepository распространяется CrudRepository, как показано ниже. SpringBoot автоматически найдет все репозитории и создаст экземпляры. Вам не нужно комментировать классы репозитория.

public interface ArtistRepository extends CrudRepository<Artist, Long> 
Смежные вопросы