使用Spring的@Autowired注解时,IntelliJ IDEA会显示错误
当我在类中使用Spring的@Autowired
注解时,IntelliJ IDEA显示错误,但是类没有任何问题。
这是错误消息:
自动assembly成员必须在有效的spring bean(@ Component / @ Service等)中定义less…(Ctrl + F1)检查bean类中的自动assembly问题。
我有IntelliJ IDEA 13.1.4相同的问题,我通过删除弹簧面(文件 – >项目结构),只是显示“检测”解决了它。
在这里得到同样的错误!
看来Intellij无法validation类实现是@Service还是@Component。
解决它只是从错误更改为警告(按Alt + Enter)。
文件 – >项目结构 – >模块 – > +(在中央列) – >弹簧 – >确定
从您的所有项目模块中删除.iml文件,然后转到文件 – >无效caching/重新启动
如果你知道这个bean存在,并且它只是一个检查问题,那么只需在variables声明前加上以下内容:
@SuppressWarnings("SpringJavaAutowiringInspection") @Inject MyClass myVariable;
有时IntelliJ无法parsing,如果一个bean已经声明,例如,当有条件地包含的bean和条件parsing发生在运行时。
确保你的Spring bean定义正确。 有时,应用程序工作正常,它只是在IDE中显示错误,如果您定义了Spring方面,请检查您的项目的“iml”文件。
我有同样的问题。 我通过为每个相关模块添加Spring构面(文件 – >项目结构)来解决此问题,然后添加configuration文件。 对于一些项目(spring mvc),自动检测到的configuration文件。 但是,对于一个jar项目,我不得不手动添加configuration文件。
我遇到了同样的问题。 我的是因为包含自动assembly引用的bean不是Spring组件(它是一个EJB),但是有一个SpringBeanAutowiringInterceptor拦截器允许使用自动assembly。 我认为Intellij在自动assembly检查中不会采取这种可能性。
我也有这个问题。 做alt + 进入 ,然后要求重新运行或禁用弹簧检查在影响线固定它。 这似乎只是在13.4更新之后才成为问题。
这看起来像可见性问题 – 父控制器没有看到您尝试连线的组件。
尝试添加
@ComponentScan("path to respective Component")
到父母控制器。
我的是不在我的CrudRepository接口添加@Repository,我正在看的教程没有添加到STS,它没有抱怨。
确保你的IntelliJ Idea(IDE)知道你的模块正在被检查的所有必要的弹簧configuration。
你可以检查下
文件>项目结构>模块> [右侧面板中的项目名称]> Spring
有时候,我们需要明确地告诉IDE Springconfiguration来自一个依赖项(一个存在于你的项目类path中的jar)
你应该检查你是否有@Component,@Repository或类似的类添加
我解决了添加一个Web面。
在我的情况下,我错过了写在web.xml中:
<listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <listener> <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class> </listener> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath*:applicationContext.xml</param-value> </context-param>
并在应用程序上下文文件中:
<context:component-scan base-package=[your package name] />
添加这个标签并运行maven重build项目后,intellj desapears中的autowired错误和bean图标出现在左边距中:
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 {