2012-02-21 102 views
0

我必須爲不同類型的合同實施服務。起初,我們考慮創建一個spring服務,使用if結構重定向到一個類型特定的服務。取決於某個屬性的彈簧注入

春天必須有更好的解決方案。

是否有一種簡單的方法來動態注入每種類型的服務使用spring知道每個類型都會有一個抽象服務和一個實現。

例子:

@Inject ContractService contractService; 
... 
Contract iContract = new InsuranceContract(...); 
Contract sContract = new SaleContract(...); 
... 
contractService.save(sContract); 
contractService.save(iContract); 

的ContractService是抽象的,春天會得到取決於合同類型提供適當的服務。

問候

回答

0

春不適合你的域邏輯,即使你可以通過覆蓋在類的某些方法這春天將分配適當的bean之前自動調用實現它,但我不會把它推薦給你,只是因爲普通的java代碼更適合這種類型的任務。

我會建議你去解決你最初建議

我必須爲不同類型的合同實施的服務。起初,我們考慮創建一個spring服務,使用if結構重定向到一個類型特定的服務。

如果你考慮一下,在你的底層問題中,你必須處理一個if/else if場景,你希望在XML還是Java中看到這一點?我認爲總的來說,在Java中看到這一點會更好,而離開Spring最適合。

+0

那麼使用命名約定和反射的解決方案是一個更好的解決方案嗎? – Jan 2012-02-21 17:04:56

+0

恕我直言,我會去尋找最簡單的解決方案...所以,如果你只有一個接口和一些實現,我會去顯式的解決方案,就是這樣,創建一個服務定位器,如你所說...如果你有一個更復雜的場景,有許多接口和實現,然後我會考慮反射解決方案..你必須記住,你使用的標準Java解決方案越多,即Frameworks,reflection ...越難閱讀和維護你的代碼。 – 2012-02-21 17:11:52