web-dev-qa-db-fra.com

Impossible de câbler automatiquement. Aucun bean de type `Repository 'trouvé

J'utilise Spring Data Jpa, voici la structure de mon projet:

App
  ConfigPackage
    MyConfig
  ServicePackage
    MyService
  RepositoryPackage
    MyRepository

Voici le MyRepository:

public interface MyRepository extends JpaRepository<MyEntity, Long> {
}

Voici le MyService:

@Service
public class MyService {

    @Autowired
    private MyRepository myRepository; <---here

    ...
}

Voici le MyConfig:

@Configuration
@EnableJpaRepositories(
        basePackages = "RepositoryPackage",
        entityManagerFactoryRef = "xxx",
        transactionManagerRef = "xxx"
)
public class MyConfig {
}

J'utilise @Autowired pour injecter MyRepository dans MyService, mais IntelliJ se plaint toujours

Impossible de câbler automatiquement. Aucun bean de type "MyRepository" trouvé

même si le code peut être compilé et exécuté avec succès.

Pourquoi IntelliJ ne peut-il pas reconnaître que ce n'est pas une erreur? Comment supprimer l'avertissement d'IntelliJ?

Version IntelliJ: 2018.2.6

4
xingbin

Essayez-le:

@Configuration
@ComponentScan(basePackages = {"your repository package}")
0
squalltrt

Vous pouvez soit déclarer:

@SuppressWarnings("SpringJavaAutowiringInspection")

Sur le terrain, ou supprimez l'avertissement via l'inspection du code d'Intellij (cliquez sur l'ampoule rouge et vous pouvez supprimer 'Autowiring for Bean Class' pour le champ ou pour toute la classe.

0
AlgorithmFromHell

Dans la configuration de votre base de données, vous devez déclarer vos packages de base:

@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(
        entityManagerFactoryRef = "postgreEntityManager",
        transactionManagerRef = "postgreTransactionManager",
        basePackages = "fr.lab.test.dao"
)
public class PostGreDBConfig {
0
L. Quastana

J'ai eu le même problème une fois, mais en changeant simplement la structure du projet et en déplaçant votre MyRepository vers le même package que celui où vous avez le service. Cela devrait fonctionner. Je ne sais pas pourquoi ça arrive.

0
Shubham