Voj*_*ěch 5 spring dependency-injection autowired
我在我的Java应用程序中使用Spring,所有@Autowired注释一直工作到现在.
简化的例子是:
@Component
public class MyBean implements MyInterface {
...
}
@Component
public class MyOtherBean {
@Autowired
private MyBean myBean;
...
}
Run Code Online (Sandbox Code Playgroud)
一旦我尝试启动应用程序,我得到:
java.lang.IllegalArgumentException: Can not set MyBean field MyOtherBean.myBean to $ProxyXX
implements部分后,一切正常.接口的实现有什么问题?什么是$ProxyXX?
Wil*_*ing 11
我怀疑问题是Spring正在注入一个实现的AOP代理MyInterface- 可能用于事务管理或缓存.是否有任何MyBean方法@Transactional使用任何其他注释进行注释或注释?
理想情况下,您可能希望通过它的接口类型引用MyBean - 这应该可以解决问题.
@Component
public class MyOtherBean {
@Autowired
private MyInterface myBean;
...
}
Run Code Online (Sandbox Code Playgroud)
如果你有多个bean实现,MyInterface那么你总是按名称限定你的bean.
@Component
public class MyOtherBean {
@Autowired
@Qualifier("myBean")
private MyInterface myBean;
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5782 次 |
| 最近记录: |