2017-10-18 5 views
0

J'ai écrit une application de démarrage du ressort de l'échantillon et il ne parvient pas à exécuter avec le messagegrain de printemps avec l'annotation non identifié @Repository

` Description: Champ customerRepository dans com.hibernatetutorial.service.CustomerServiceImpl nécessaire un haricot de tapez 'com.hibernatetutorial.repository.CustomerRepository' qui n'a pas pu être trouvé.

Action: Tenir compte définir un bean de type 'com.hibernatetutorial.repository.CustomerRepository' dans votre configuration.`

J'ai une annotation sur @Repository classe CustomerRepository et il est package est là dans l'analyse des paquets de base .

ci-dessous la configuration

@SpringBootApplication 
@ComponentScan(basePackages="com.hibernatetutorial") 
public class HibernateTutorialApplication { 

    public static void main(String[] args) { 
     SpringApplication.run(HibernateTutorialApplication.class, args); 

    } 

} 

@Repository 
@Transactional 
public interface CustomerRepository extends JpaRepository<Customer, UUID>{ 

} 

@Service 
@Transactional 
public class CustomerServiceImpl implements CustomerService { 

    @Autowired 
    private CustomerRepository customerRepository; 

    public Customer createCustomer(Customer customer) { 
     return customerRepository.save(customer); 
    } 

} 

entité client est annotées avec @Entity. Toute suggestion si je manque quelque chose

+0

Y a-t-il une raison pour laquelle vous spécifiez @ComponentScan manuellement? Ces classes sont-elles dans des paquets différents? – dillius

+0

Oui, ils sont dans leurs paquets respectifs comme service, référentiel, modèle etc .. J'ai supprimé componentscan et l'a remplacé par SpringBootApplication (scanBasePackages = {"com.hibernatetutorial"}) comme SpringBootApplication se chargera également de l'analyse des composants, mais toujours l'erreur est-il – arjun

+0

Lorsque vous avez essayé d'utiliser @EnableJpaRepositories, avez-vous spécifié le package exact comme vous l'avez fait pour l'analyse des composants? – dillius

Répondre

1

Pour utiliser JpaRepository vous devez ajouter une des options suivantes à votre application:

@EnableAutoConfiguration pour le printemps Boot pour le comprendre lui-même ou

@EnableJpaRespositories(basePackageScan="com.example") pour spécifier vous-même

For more information

+0

J'ai essayé les deux mais l'erreur ne s'est pas dissipée. Selon la documentation "L'annotation SpringBootApplication équivaut à utiliser Configuration, EnableAutoConfiguration et ComponentScan avec leurs attributs par défaut:" Je ne sais pas si nous devons encore ajouter. – arjun

+0

Mon erreur, j'ai dû le faire parce que j'avais une configuration séparée spécifiée en dehors de la SpringBootApplication elle-même dans ma dernière application de printemps. – dillius

0

S'il vous plaît vérifier votre CustomerRepository et les fichiers CustomerServiceImpl Java sont sous le même packege com.hibernatetutorial.

+0

Ils ne sont pas dans le même paquet mais c'est pourquoi j'ai mis l'analyse de paquet de base comme (scanBasePackages = {"com.hibernatetutorial"}). Ici com.hibernatetutorial fait partie de l'ensemble du paquet en supposant qu'il va scanner tout le paquet avec com.hibernatetutor de démarrage – arjun

+0

@arjun Okkay.Si les deux fichiers sont sous le paquet de base com.hibernatetutorial.Then il devrait fonctionner avec le ComponentScan ("com.hibernatetutorial . * ") annotation. – GaneshSreeju

+0

J'ai essayé ("com.hibernatetutorial. *") Après avoir réalisé que je dois ajouter * mais cela n'a pas fonctionné. Cela fonctionnait quand j'ai ajouté EnableJpaRepository avec le paquet de base comme ("com.hibernatetutorial. *"). – arjun