当bean实现与Spring的某些接口时,无法自动装配字段

当bean实现与Spring的某些接口时,无法自动装配字段,第1张

概述我在我的Java应用程序中使用Spring,所有@Autowired注释一直工作到现在.简化的例子是: @Component public class MyBean implements MyInterface { ... } @Component public class MyOtherBean { @Autow

我在我的Java应用程序中使用Spring,所有@autowired注释一直工作到现在.

简化的例子是:

  @Component  public class MyBean implements MyInterface {      ...  }  @Component  public class MyOtherBean {      @autowired      private MyBean myBean;      ...  }

一旦我尝试启动应用程序,我得到:

java.lang.IllegalArgumentException:无法将MyBean字段MyOtherBean.myBean设置为$ProxyXX

>接口只包含两个公共简单方法,类实现它们.
>这两个类都是公共的,并且具有公共默认构造函数. (我甚至试图在测试中实例化它们.
>一旦我删除了implements部分,一切正常.

接口的实现有什么问题?什么是$ProxyXX?最佳答案我怀疑问题是Spring注入了一个实现MyInterface的AOP代理 – 可能是为了事务管理或缓存.是否有任何MyBean方法注释@Transactional或使用任何其他注释注释?

理想情况下,您可能希望通过它的接口类型引用MyBean – 这应该可以解决问题.

@Componentpublic class MyOtherBean {    @autowired    private MyInterface myBean;    ...}

如果你有多个bean实现MyInterface,那么你总是按名称限定你的bean.

@Componentpublic class MyOtherBean {    @autowired    @QualifIEr("myBean")    private MyInterface myBean;    ...}
总结

以上是内存溢出为你收集整理的当bean实现与Spring的某些接口时,无法自动装配字段全部内容,希望文章能够帮你解决当bean实现与Spring的某些接口时,无法自动装配字段所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1242802.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存