2012-09-09 51 views
0

在我的項目中,我有一個用org.springframework.stereotype.Service標記註釋的接口。如何在Spring 3.0服務中實現工廠模式

我對這個接口有兩種不同的實現。

在我的管理bean中,我注入了接口Service類並使用它的方法。

現在我的要求是,在運行時我必須選擇特定的實現(可以說基於登錄用戶組),以便可以調用各自的邏輯。

根據我的理解,我們可以在java中使用Factory模式來實現此目的並實現相同。

我們如何在SPRIng中實現這個?

+4

相關:http://stackoverflow.com/questions/7537620 –

回答

1

除了上面建議的相關話題,還有一個很好的thread on JavaRanch

你可以用@Autowired同時使用

  1. @Qualifier( 「myServiceImpl1」)註解。在 這種情況下,該接口的特定實現將被注入 。您還應該在@Component中使用相同的名稱, @Service或@Repository註釋例如

    @Service("myServiceImpl1") 
    public class MyServiceImpl1 implements MyService{} 
    
    
    public class Consumer{ 
        @Autowired 
        @Qualifier("myServiceImpl1") 
        public MyService myServiceImpl1; 
    } 
    
  2. @Primary與@Component,@Service或在您的實現類@Repository 註釋在一起,在這種情況下,這個 實施將在默認情況下被注入。

  3. 如果您使用@Autowired標記某種接口類型的列表,則將會注入此接口的所有可用實現。

    @Autowired 
    public List<MyService> allAvailableImplementations; 
    
+0

死鏈接的情況。請在這裏總結或引用關鍵位。只有鏈接的答案可能會被刪除,恕不另行通知。謝謝。 –