2015-05-09 44 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

    感謝您清除所有關於靜態工廠方法的疑問。 –