用@Autowired注入实现ApplicationListener的bean不起作用?

时间:2011-07-11 14:12:33

标签: spring autowired inject

我有一个服务bean(用@Service注释),它为扩展ApplicationEvent抽象类的T类事件对象实现ApplicationListener接口。在Spring docs here

中有一个非常简单明了的例子

然而,当我尝试使用@Autowired将此bean注入其他bean时,我得到的是:

  

org.springframework.beans.factory.NoSuchBeanDefinitionException:没有   为依赖项找到匹配类型[...]的bean:预期至少为1   bean有资格作为此依赖项的autowire候选者。   依赖注释   {@ org.springframework.beans.factory.annotation.Autowired(所需=真)}

如果我尝试使用像@Resource这样的东西,那么我会得到一个类强制转换异常(尝试注入一种类型的资源但是获得代理)。

1 个答案:

答案 0 :(得分:5)

  

如果我尝试使用像@Resource这样的东西,那么我会得到一个类演员   异常(尝试注入一种类型的资源,但获得一个   代理)。

这听起来像是在尝试按类引用它,而它是作为基于接口的JDK代理连接的。

如果你有这门课程:

@Service
public class FooServiceImpl implements FooService{}

将其连接为:

@Autowired
private FooService fooService;

不是:

@Autowired
private FooServiceImpl fooService;

<强>参考: