IntelliJ IDEA affiche des erreurs lors de l’utilisation de l’annotation @Autowired de Spring

IntelliJ IDEA affiche des erreurs lorsque j’utilise l’annotation @Autowired de Spring dans la classe, mais la classe fonctionne sans aucun problème.

Voici ce message d’erreur:

Les membres automatiquement enregistrés doivent être définis dans le bean de spring valide (@ Component / @ Service, etc.) moins … (Ctrl + F1) Vérifie les problèmes de création automatique dans une classe de bean.

J’ai eu le même problème avec IntelliJ IDEA 13.1.4 Je l’ai résolu en supprimant la facette Spring (File-> Project Structure) et en la laissant simplement afficher “Detection”.

Vous avez la même erreur ici!

Il semble que l’Intellij ne puisse pas vérifier si l’implémentation de la classe est un @Service ou @Component.

Résolvez-le simplement en changeant d’erreur en avertissement (en appuyant sur Alt + Entrée).

Supprimez le fichier .iml de tous vos modules de projet et allez ensuite dans Fichier -> Invalider les caches / Redémarrer

Si vous savez que le bean existe et qu’il ne s’agit que d’un problème d’inspection, ajoutez simplement ce qui suit avant la déclaration de variable:

 @SuppressWarnings("SpringJavaAutowiringInspection") @Inject MyClass myVariable; 

Parfois, IntelliJ ne peut pas résoudre si un bean a été déclaré, par exemple lorsque le bean est inclus de manière conditionnelle et que la résolution de la condition se produit au moment de l’exécution.

Fichier -> ProjectStructure -> Modules -> + (dans la colonne centrale) -> Spring -> OK

Assurez-vous que vos définitions de haricots de spring sont correctes. Parfois, l’application fonctionne correctement, elle affiche simplement une erreur dans l’EDI, vérifiez le fichier ‘iml’ de votre projet si une facette Spring est définie.

J’ai eu le même problème. Je l’ai résolu en ajoutant la facette Spring (Fichier-> Structure du projet) pour chaque module concerné, puis en ajoutant les fichiers de configuration. Pour certains projets (spring mvc), les fichiers de configuration ont été détectés automatiquement. Cependant, pour un projet JAR, j’ai dû append les fichiers de configuration manuellement.

Assurez-vous que votre IntelliJ Idea (IDE) est conscient de toutes les configurations de ressorts nécessaires à l’inspection de votre module.

Vous pouvez vérifier cela sous

Fichier> Structure du projet> Modules> [le nom de votre projet dans le panneau de droite]> Spring

Parfois, nous devons indiquer explicitement à l’IDE que la configuration du spring provient d’une dépendance (un fichier JAR présent dans votre chemin de classe de projet).

J’ai le même problème. Le mien était parce que le bean contenant la référence automatique n’était pas un composant Spring (c’était un EJB), mais il disposait d’un intercepteur SpringBeanAutowiringInterceptor permettant l’utilisation de la génération automatique. Je pense qu’Intellij ne prend pas cette possibilité dans son inspection Autowiring.

J’ai eu ce problème également. Faire alt + enter puis demander de réexécuter ou de désactiver l’inspection Spring sur la ligne concernée l’a corrigé. Cela semble être devenu un problème après la mise à jour 13.4.

Cela semble être le problème de visibilité – le contrôleur parent ne voit pas le composant que vous essayez de câbler.

Essayer d’append

 @ComponentScan("path to respective Component") 

au contrôleur parent.

Le mien est de ne pas append @Repository sur mon interface CrudRepository, le tutoriel que je regardais ne l’a pas ajouté sur STS et il ne s’est pas plaint.

Vous devriez vérifier si vous avez ajouté @Component, @Repository ou similaire dans la classe

Je l’ai corrigé en ajoutant l’avertissement de suppression:

  @SuppressWarnings("SpringJavaInjectionPointsAutowiringInspection") @Autowired private .... 

J’ai résolu que l’ajout d’une facette Web.

dans mon cas, il me manquait d’écrire dans web.xml:

   org.springframework.web.context.ContextLoaderListener   org.springframework.web.context.request.RequestContextListener   contextConfigLocation classpath*:applicationContext.xml  

et dans le fichier de contexte d’application:

  

Après l’ajout de ces balises et l’exécution de maven pour reconstruire le projet, l’erreur automatiquement présente dans intellj est apparue et l’icône du bean apparaît dans la marge de gauche: entrer la description de l'image ici

 eg1: director:Settings - Editor - Inspections - Spring - Spring Core - Code - Autowiring for Bean Class operate:checkout 勾去掉eg2: 1.impl class add @service like this: @Service public class CityServiceImpl implements CityService{ @Autowired private CityDao cityDao; like this 2.dao file class add @Repository @Repository public interface CityDao { 

J’ai résolu ce problème de cette façon. Dans IntelliJ, tous vos paquets doivent être dans un sous-paquet qui est le sous-paquet de main / java. Par exemple, j’ai mis tous mes paquets sous src / main / java / com.misisol.watchStore / et spring pouvait trouver mes beans ensuite.

Inject Bean avec @Qualifier a résolu le problème pour moi.

J’ai eu un problème similaire. Je l’ai résolu en décochant l’option “Traiter explicitement les haricots annotés” (voir capture d’écran ci-dessous). Cette option est activée par défaut sur linux. Maintenant, les annotations @Service et @Configurations sont visibles. capture d’écran

Résoudre le problème en allant dans Fichier >> Structure du projet >> Facettes, puis en ajoutant tous les fichiers de configuration à Spring Facet. Après cela, il a commencé à détecter les fichiers dans lesquels les beans résident et a pu sortinger le problème. IntelliJ donnant cette vérification est très utile et IMHO ne devrait pas être désactivé.