“Pas de qualification bean de type” pour JPA référentiel au Printemps de Démarrage
Je suis la mise en œuvre de l'API Rest avec Spring Boot. Depuis mes classes d'entité sont à partir d'un package à partir d'un autre paquet, j'ai eu à préciser qu'avec l'annotation EntityScan
. Aussi, j'ai utilisé EnableJpaRepositories
pour spécifier le package où JPA référentiel est défini. Voici ce que mon projet ressemble:
//Application.java
@Configuration
@EnableAutoConfiguration
@ComponentScan
@EntityScan("org.mdacc.rists.cghub.model")
@EnableJpaRepositories("org.mdacc.rists.cghub.ws.repository")
Dans mon contrôleur de classe que j'avais un SeqService objet autocâblés.
//SeqController.java
@Autowired private SeqService seqService;
@RequestMapping(value = "/api/seqs", method = GET, produces = APPLICATION_JSON_VALUE)
public ResponseEntity<List<SeqTb>> getSeqs() {
List<SeqTb> seqs = seqService.findAll();
return new ResponseEntity<List<SeqTb>>(seqs, HttpStatus.OK);
}
SeqService
est une interface à partir de laquelle j'ai créé une classe d'Haricot pour que SeqServiceBean
. Dans le SeqServiceBean
je autocâblés la JPA référentiel:
//SeqServiceBean.java
@Autowired private SeqRepository seqRepository;
@Override
public List<SeqTb> findAll() {
List<SeqTb> seqs = seqRepository.findAll();
return seqs;
}
//SeqRepository.java
@Repository
public interface SeqRepository extends JpaRepository<SeqTb, Integer> {
@Override
public List<SeqTb> findAll();
public SeqTb findByAnalysisId(String analysisId);
}
Cependant, l'application n'a pas pu démarrer en raison de l'erreur suivante:
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [org.mda.rists.cghub.ws.repository.SeqRepository] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:1373) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1119) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1014) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:545) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
Je ne comprends pas l'erreur. Que faut-il avoir à faire avec la qualification de haricot?
SeqRepository
instance de autowire. Ajouter votre structure de projet et certains référentiel de code correspondant.refactoriser Application.java les annotations de supprimer toute utilisation de cette @SpringBootApplication @EntityScan({"org.mdacc.rists.cghub.modèle"}) @EnableJpaRepositories(basePackages = {"org.mdacc.rists.cghub.ws.référentiel"})
hatake essayé ce que vous avez suggéré et toujours la même erreur
Ajouté projet de la structure et du référentiel de la classe.
Pouvez-vous déplacer votre
Application
en org.mda
paquet et de supprimer tous les EntityScan
et EnableJpaRepositories
?
OriginalL'auteur Nasreddin | 2016-03-17
Vous devez vous connecter pour publier un commentaire.
Vous balayer le mauvais paquet dans votre
EnableJpaRepositories
. Il n'y a pas deorg.mdacc.rists.cghub.ws.repository
paquet. Ainsi, l'utilisation de ce lieu:Printemps Boot ne nécessite pas de code spécifique à la mise en page de travail, cependant, il ya quelques bonnes pratiques qui pourront vous aider. Découvrez la printemps de démarrage de la documentation sur les meilleures pratiques de structurer votre code.
OriginalL'auteur Ali Dehghani