如何在spring中初始化或配置单例/工厂方法?

时间:2016-01-19 15:34:52

标签: java spring spring-mvc

我有以下工厂方法,我想在spring XML中初始化。

public final class ProductDaoFactory {

    private static final ProductDaoFactory INSTANCE = new ProductDaoFactory();

    //so cannot new an intance
    private ProductDaoFactory() {
    }

    //singleton
    public static ProductDaoFactory getInstance() {
        return INSTANCE;
    }

    //factory method
    public ProductDao getProductDao(String daoType) {
        ProductDao productDao = null;

        if ("jdbc".equalsIgnoreCase(daoType)) {
            productDao = new ProductDaoJdbcImpl();
        } else if ("ibatis".equalsIgnoreCase(daoType)) {
            productDao = new ProductDaoIBatisImpl();
        } else if ("hibernate".equalsIgnoreCase(daoType)) {
            productDao = new ProductDaoHibernateImpl();
        }

        return productDao;
    }
}

以下是正确的配置方式吗?

<bean id="productDaoFactory" class="com.ministore.dao.factory.ProductDaoFactory" factory-method="getInstance"></bean>  
<bean id="productDaoFactory" class="com.ministore.dao.factory.ProductDaoFactory" factory-method="getProductDao">
    <property name="daoType" value="jdbc" />
</bean>  

1 个答案:

答案 0 :(得分:1)

您可以尝试以下bean配置。

<bean id="productDaoFactory" class="com.ministore.dao.factory.ProductDaoFactory" factory-method="getInstance"/>

    <bean id="jdbcProductDao" factory-bean="productDaoFactory" factory-method="getProductDao">
        <constructor-arg value="jdbc"/>
    </bean>

    <bean id="hibernateProductDao" factory-bean="productDaoFactory" factory-method="getProductDao">
        <constructor-arg value="hibernate"/>
    </bean>

    <bean id="iBatisProductDao" factory-bean="productDaoFactory" factory-method="getProductDao">
        <constructor-arg value="ibatis"/>
    </bean>
相关问题