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

时间:2015-05-09 10:23:19

标签: spring

context.xml中

<!-- 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创建。那么我们更喜欢这种静态工厂方法和正常的bean创建?

1 个答案:

答案 0 :(得分:1)

当构造函数无法完成工作时,通常使用工厂方法:

  • 如果您需要基于某些参数,系统属性或环境变量实例化一个或另一个类
  • 如果要实例化的类甚至不提供构造函数,但只能通过使用工厂方法获得。请参阅示例Executors.newSingleThreadExecutor()
  • 如果必须通过在构造之后调用各种初始化方法或setter来配置要创建的对象。

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