Spring学习笔记--通过构造方法创建Bean

如果一个bean没有默认的构造函数,那么可以通过工厂方法来构造一个bean。Spring通过<bean>元素的factory-method属性来装配工厂创建的Bean。
下面例子中的Stage是一个工厂类,通过它的getInstance()方法可以获得一个单例,但是他没有共有的构造函数,所以在构造Bean的时候需要通过工厂方法getInstance()来获得一个实例Bean。
Stage类作为单例类来实现。

package com.moonlit.myspring;

public class Stage {
    private Stage() {
    }
    private static class StageSingletonHolder {
        static Stage instance = new Stage();
    }
    public static Stage getInstance() {
        return StageSingletonHolder.instance;
    }
}

在xml文件中的配置如下:

  <bean id="theStage" class="com.moonlit.myspring.Stage" factory-method="getInstance" />

 Bean的作用域
所有的Spring Bean默认都是单例。为了让Spring在每次请求时都为Bean产生一个新的实例,我们需要配置bean的scope属性为prototype。

  <bean id="theStage" class="com.moonlit.myspring.Stage" factory-method="getInstance" scope="prototype" />



原文地址:https://www.cnblogs.com/moonlightpoet/p/5537214.html