【发布时间】: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