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
Essayez-le:
@Configuration
@ComponentScan(basePackages = {"your repository package}")
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.
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 {
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.