2015-05-09 71 views
0

的context.xml我们在哪里需要在Spring中使用静态工厂方法?

<!-- the factory bean, which contains a method called createInstance() --> 
<bean id="serviceLocator" class="examples.DefaultServiceLocator"> 
<!-- inject any dependencies required by this locator bean --> 
</bean> 
<!-- the bean to be created via the factory bean --> 
<bean id="clientService" 
factory-bean="serviceLocator" 
factory-method="createClientServiceInstance"/> 

DefaultServiceLocator.java

public class DefaultServiceLocator { 
    private static ClientService clientService = new ClientServiceImpl(); 
    private DefaultServiceLocator() {} 
    public ClientService createClientServiceInstance() { 
    return clientService; 
    } 
} 

这里我们可以使用普通的bean创建。那么我们更喜欢这种Static工厂方法,并且在哪里创建正常的bean?

回答

1

您通常使用一个工厂方法,当一个构造函数不能做的工作:如果你需要实例化一个类或其他基于一些参数,系统属性,或者在环境变量

    • 类实例化甚至不提供构造函数,但只能通过使用工厂方法获得。参见例如Executors.newSingleThreadExecutor()
    • 如果要创建的对象必须在构造后通过调用各种初始化方法或设置器来配置。

    请注意,现代Spring应用程序不应该使用XML来创建这样的bean。他们应该使用一个Configuration类,它包含创建Bean的@Bean注释方法。

  • +0

    感谢您清除所有关于静态工厂方法的疑问。 –