【问题标题】:Issue with getting prototype bean from application context从应用程序上下文获取原型 bean 的问题
【发布时间】:2017-05-09 16:28:51
【问题描述】:

我有一个要求,我必须在作为我的处理器的类的循环中获取几个有状态的 bean。这个处理器 bean 本身是一个单例 bean。现在问题出在一个地方,我能够成功地从应用程序上下文中获取 bean,但在其他情况下,我得到了一个代理对象。我正在使用注释来定义 bean 的范围并使用组件扫描。

案例 1 - 接口 1

A 类实现 Interface1

applicationContext.getBean("a",A.class);这将成功返回 A 类的对象。A 类是原型 bean

案例 2 -interface2 B类实现Interface2(B类是原型bean) applicationContext.getBean("b",B.class); 这会引发运行时异常,抱怨类型不匹配 如果我做 B b= (B)applicationContext.getBean("b",); 这给出了类型转换异常 如果我做 applicationContext.getBean("b"); 然后它返回代理对象。 我无法理解这种行为。

任何建议或帮助都会很棒....

【问题讨论】:

  • 请添加代码
  • 另外,您是否使用任何可能负责代理您的 bean 的框架?例如 AspectJ?
  • 是的,托马斯。 bean 周围有一个方面,因此应用程序上下文提供的是代理对象而不是 bean。

标签: spring


【解决方案1】:

我发现如果在应用程序中有围绕原型 bean 的方面,那么默认情况下应用程序上下文将返回代理对象并且类型转换是不可能的,

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-31
    • 2023-03-29
    • 2017-02-14
    • 2023-03-23
    相关资源
    最近更新 更多