Spring bean可以在applicationContext.xml中的声明中成为自身的属性吗?

时间:2010-10-11 17:45:47

标签: java spring spring-mvc

我需要在rubberStampService类中调用RubberStampServiceImpl的公共方法。

要从内部引用rubberStampService,我可以像这样制作一个自引用bean声明:

<beans:bean id="rubberStampService" class="com.rubberly.RubberStampServiceImpl">
    <beans:property name="rubberStampService" ref="rubberStampService" />
</beans:bean>

2 个答案:

答案 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.
    }
}