IntelliJ IDEA在使用Spring的@Autowired注释时显示错误

Vai*_*lyh 91 spring warnings spring-mvc intellij-idea intellij-inspections

当我@Autowired在类中使用Spring的注释时,IntelliJ IDEA显示错误,但该类运行没有任何问题.

这是以下错误消息:

必须在有效的spring bean中定义自动装配的成员(@ Component/@ Service等)less ...(Ctrl + F1)检查bean类中的自动装配问题.

Jos*_*eon 30

我有同样的问题IntelliJ IDEA 13.1.4我通过删除Spring facet(文件 - >项目结构)解决它,并让它只显示"检测".

  • 但是如果你真的忘记注释一个bean会怎么样呢.你不会得到任何警告? (31认同)

lan*_*oxx 21

如果你知道bean存在并且它只是检查的问题,那么只需在变量声明之前添加以下内容:

@SuppressWarnings("SpringJavaAutowiringInspection")
@Inject MyClass myVariable;
Run Code Online (Sandbox Code Playgroud)

有时,如果已声明bean,则IntelliJ无法解析,例如,当有条件地包含bean并且在运行时发生条件解析时.

  • 类级别的@SuppressWarnings(“ SpringJavaAutowiredMembersInspection”)效果很好 (2认同)

Thi*_*ira 18

在这里得到了同样的错误!

看来Intellij无法验证类实现是@Service还是@Component.

解决它只是从错误更改为警告(按Alt + Enter).

  • “解决它只需从错误更改为警告”。你不能称其为“解决方案”。 (8认同)

小智 17

从所有项目模块中删除.iml文件,然后转到文件 - >无效缓存/重新启动

  • 删除方面和抑制警告或类似的"修复"似乎不合逻辑或聪明,所以我给了这个镜头.但我没有做同样的最后一步.相反,我删除了我的`.iml`文件,选择重新导入`pom.xml`文件中的maven选项,然后执行`ctrl + s`来重新生成`.iml`.错误消失了. (9认同)

小智 15

我通过添加supress警告来修复它:

 @SuppressWarnings("SpringJavaInjectionPointsAutowiringInspection")
 @Autowired
 private ....
Run Code Online (Sandbox Code Playgroud)

  • 你不能称其为“解决方案”。 (24认同)

小智 13

文件 - > ProjectStructure - >模块 - > +(在中央列) - > Spring - > OK


kar*_* li 10

我有同样的问题。

\n

在此输入图像描述

\n

我认为修复它的正确方法是告诉 Intellij 找到正确的 Spring Context,而不是“抑制警告”。

\n

简而言之,File -> ProjectStructure(\xe2\x8c\x98;) -> Modules -> (选择模块) -> Spring -> (点击“+”添加上下文) -> OK

\n

在此输入图像描述

\n

添加上下文文件:

\n

在此输入图像描述

\n

完毕!

\n

在此输入图像描述

\n


小智 6

我可能有点晚了,但在花了几个小时研究这个问题之后。

我发现在最新版本的IntelliJ 2020中@AutoWired 是可选的,并且基于构造函数的依赖注入更可取。

我通过简单地从 Service 和 Controller 类中删除@AutoWired注释并使用基于构造函数的依赖注入来解决这个问题。

链接可能有帮助。

快乐编码!


小智 5

确保您的 Spring bean 定义正确。有时,应用程序工作正常,只是在 IDE 中显示错误,如果定义了 Spring 构面,请检查项目 \xe2\x80\x98iml\xe2\x80\x99 文件。

\n


jba*_*eda 5

我有同样的问题.我通过为每个相关模块添加Spring facet(File-> Project Structure)来解决它,然后添加配置文件.对于某些项目(spring mvc),自动检测配置文件.但是,对于jar项目,我必须手动添加配置文件.


tom*_*ohn 5

通过转到 File >> Project Structure >> Facets 然后将所有配置文件添加到 Spring Facet 解决了该问题。之后,它开始检测 bean 所在的文件并能够对问题进行排序。IntelliJ 提供此检查非常有价值,恕我直言,不应禁用。