Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在春天建立一个创造单身的工厂_Java_Spring - Fatal编程技术网

Java 如何在春天建立一个创造单身的工厂

Java 如何在春天建立一个创造单身的工厂,java,spring,Java,Spring,我有一个必须使用factory方法创建的对象: public class FrameFactory { public static Frame createFrame() throws IOException, SerializationException { BXMLSerializer bxmlSerializer = new BXMLSerializer(); return (Frame)bxmlSerializer.readObject(Frame

我有一个必须使用factory方法创建的对象:

public class FrameFactory {
    public static Frame createFrame() throws IOException, SerializationException {
        BXMLSerializer bxmlSerializer = new BXMLSerializer();
        return (Frame)bxmlSerializer.readObject(FrameFactory.class, "/gui/MainFrame.bxml");
    }
}
获取平均值的Spring调用如下:

<bean id="frame" class="Frame" factory-method="createFrame"/>

但是,我希望这个对象是singleton

我的问题是Spring是否有一些现成的方法来生成singleton,或者我必须自己在FrameFactory中实现singleton模式


非常感谢。

当您使用静态工厂方法时,正确的语法是:

<bean id="frame" class="FrameFactory " factory-method="createFrame"/>


而且您不必创建工厂bean。默认情况下,
frame
bean将实例化为单例bean。

OP要从
BXMLSerializer
对象获取
frame
对象,是否可以不使用工厂方法?。您可以按您的方式创建两个bean(使用不同的ID),但它们不会==我知道。但是,如果一个程序员无缘无故创建了同一类的两个bean,并且惊讶于没有一个真正的单例,那么应该怪他,而不是Spring。您得到的是不同的对象吗?我不这么认为。打印返回的
Frame
对象的
hashCode