2011-05-02 83 views

回答

5

編輯:將在軟件設計方面更加註重,並更新API鏈接SpringV3

正如在其他的答案中提到,這不是Spring MVC的一種理想的方法,但仍然控制器將已經可用於在您的ApplicationContext中進行自動裝配。

它已經是您的ApplicationContext中的一個Bean,因此您可以按類型自動連線。不需要添加@Component註釋。

從Spring API文檔:「這個註釋作爲@Component的專門化,允許通過類路徑掃描來自動檢測實現類。」

http://static.springsource.org/spring/docs/3.0.x/api/org/springframework/stereotype/Controller.html

同爲@Service也是如此。

雖然我自己做過,但我通常不會推薦這種設計方法。

如果可能,請將所需功能重構爲一個單獨的bean,然後根據需要將它自動連接到@Controller和任何其他bean。

如果您正如您所評論的那樣,您對這一決定(與以前的設計選擇一樣)是「被迫」的,那就這樣吧。

HTH

+0

並非所有可能的建議也是可取的。使用Web控制器作爲依賴關係是一個可怕的設計缺陷 – 2011-05-03 08:24:04

+0

是的,但我回答了他的問題,並建議採用這種方法,並提出了一種替代方法。我認爲提供答案非常重要,即使它在設計層面上是不明智的。 – laher 2011-05-03 12:03:35

+0

(問題是'可以',而不是'應該') – laher 2011-05-03 12:13:07

1

不,聽起來好像太過分了。一個或另一個,不是兩個。我不知道是否有可能(我懷疑它),但我相信這是不可取的。

+0

這是可能的,但+1推薦反對它 – 2011-05-03 08:20:45

4

可以不應該。 Web控制器應該是一個入口點,沒有別的。

它執行應在專用service layer,而不是在控制器本身

+0

謝謝。通常我會這樣做,但我只想將相同的服務作爲DWR服務和Rest服務公開。我可以編寫一個控制器,然後與服務交談,但它沒有邏輯。它只是簡單的服務;不是手寫代表或代理人的大粉絲。 – pakman 2011-05-03 14:39:01

+0

@pakman好的,如何將控制器方法放入抽象類並創建兩個實例 – 2011-05-03 14:41:13

0

我認爲你應該聽到更多類似的Front Controller,MVC,DAO和多層體系結構等圖形的任何可重複使用的邏輯。