使用singleton成员/ value参数配置原型bean

时间:2011-12-07 16:36:03

标签: java xml spring

我对豆子的一个常见模式如下:

public class PrototypeBean {
    private SingletonBean singletonBean;
    private int value;
    public PrototypeBean(int value, singletonBean) {
        this.value = value;
        this.singletonBean = singletonBean;
    }
}

我不能为我的生活弄清楚如果我不知道在运行时之前会有什么值,那么实例化这样的原型bean最简洁的方法是什么。我目前的模式如下:

public class FactoryImpl implements Factory{
    private SingletonBean singletonBean;

    public FactoryImpl(SingletonBean singletonBean) {
       this.singletonBean = singletonBean;
    }

    public PrototypeBean getPrototypeBean(int value) {
       return new PrototypeBean(value, singletonBean);
    }
}

其中Factoryimpl以XML格式连接在一起。这对我来说似乎仍然很可怕,感觉我正在打破IoC。春天有没有更清洁的方法呢?

1 个答案:

答案 0 :(得分:2)

这是我遇到的Spring中最缺少的功能之一。基本上,您的解决方案是我能想到的最佳解决方法(只需制作singletonBeanvalue字段final)。

另一种方法是让Spring只用一个构造函数参数(PrototypeBean)创建SingletonBean并在之后传递value(参见:Best way to refactor this in Spring?)。然而,这不太干净,因为它允许创建半初始化对象。

最好的解决方案是利用参数化<lookup-method/> - 等待在Spring中实现的功能:SPR-7431。不要忘记投票和评论!