我需要在rubberStampService
类中调用RubberStampServiceImpl
的公共方法。
要从内部引用rubberStampService
,我可以像这样制作一个自引用bean声明:
<beans:bean id="rubberStampService" class="com.rubberly.RubberStampServiceImpl">
<beans:property name="rubberStampService" ref="rubberStampService" />
</beans:bean>
答案 0 :(得分:5)
看不出这种方法有任何问题。
Spring可以处理循环依赖(如果它们是可解析的,即如果你不使用构造函数注入),包括自引用bean的情况。唯一的区别是,在循环依赖的情况下,豆子在注射时可能没有完全初始化。
将bean配置为使用不同的协作者可能很有用,但在某些特定情况下,它需要自己使用。
另见:
答案 1 :(得分:1)
听起来像无限递归,内存不足错误等待发生。为什么不让服务调用自己的方法并完成它?您不需要新的参考,只需“这个”。
public interface FooService()
{
void foo();
void bar();
}
public class FooServiceImpl implements FooService
{
public void foo() { System.out.println("calling foo"); }
public void bar()
{
this.foo(); // just call your own method.
}
}