自动接线组件出错

时间:2016-07-25 10:59:03

标签: spring autowired

使用@Autowired annotation时,我遇到了一个奇怪的问题

我正在将一个弹簧组件注入另一个弹簧组件,如下面

import com.myutil.GenericUtils;
@Component
public class MyDomainImpl implements MyDomain {
    @Autowired
    private GenericUtils genericUtils;
}

这很好用

当我尝试将相同的组件注入不同的组件(实现通用接口)时,会抛出以下错误。

java.lang.IllegalArgumentException:参数不表示注释类型:Autowired

这是抛出错误的代码

import com.myutil.GenericUtils;
@Component
public class MyMapper implements GenericMapper<Mycomponent,MycomponentSO>{
    @Autowired
    private GenericUtils genericUtils;
}

我第一次使用Spring FW时看到此错误。  我试图找出根本原因,但没有运气。

如果我删除自动装配,则不会发生编译错误

如果有人遇到此错误,请告知解决方案

由于

1 个答案:

答案 0 :(得分:0)

我认为自动连接MyMapper的问题不是自动连接GenericUtils,如果你使用GenericMapper接口自动连接它,请尝试将其更改为MyMapper:

@Autowired
private GenericMapper myMapper ;

@Autowired
private MyMapper myMapper ;

如果它正在工作,那么大多数情况下你都有一个代理包装你的bean。

<强>更新

再次重新审核错误之后我发现它很可能来自java自己,特别是来自RoundEnvironment它有getElementsAnnotatedWith这个方法是抛出异常

  

IllegalArgumentException - 如果参数不表示   注释类型

这是你的情况,这意味着它没有考虑Autowired作为注释类型,所以请检查你是否有任何其他类名称Autowired可能导入错误,或者你的构建中有一些丢失的jar。