註解的Spring MVC控制器是否也可以使用@ Component/@ Service註釋類型進行註釋,並且既可以用作控制器又可以用作bean?註釋的Spring @Controller也作爲Bean?
回答
編輯:將在軟件設計方面更加註重,並更新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
不,聽起來好像太過分了。一個或另一個,不是兩個。我不知道是否有可能(我懷疑它),但我相信這是不可取的。
這是可能的,但+1推薦反對它 – 2011-05-03 08:20:45
它可以但不應該。 Web控制器應該是一個入口點,沒有別的。
它執行應在專用service layer,而不是在控制器本身
謝謝。通常我會這樣做,但我只想將相同的服務作爲DWR服務和Rest服務公開。我可以編寫一個控制器,然後與服務交談,但它沒有邏輯。它只是簡單的服務;不是手寫代表或代理人的大粉絲。 – pakman 2011-05-03 14:39:01
@pakman好的,如何將控制器方法放入抽象類並創建兩個實例 – 2011-05-03 14:41:13
我認爲你應該聽到更多類似的Front Controller,MVC,DAO和多層體系結構等圖形的任何可重複使用的邏輯。
- 1. struts2註釋spring管理bean
- 2. 使用Spring bean作爲@Cacheable註釋的關鍵
- 3. 基於註釋的Spring bean驗證
- 4. Spring 3 - 基於註釋的Bean驗證
- 5. 帶有自定義註釋的Spring bean
- 6. 在jsp中獲取註釋的Spring bean
- 7. Spring的@Cacheable註釋與註釋方法的bean有相同的作用域嗎?
- 8. spring @Transactional註釋
- 9. @Controller不是註釋
- 10. Spring 3.0註釋bean組件掃描
- 11. 以spring註釋方式給出bean id
- 12. 註釋Groovy bean在Spring中加載
- 13. Spring名稱註釋
- 14. 註釋在Spring MVC
- 15. Spring注入bean爲null
- 16. Spring @Required屬性創建@Bean帶註釋的bean
- 17. @ strut2的Autowired Spring註釋
- 18. 使用@Repository,@Service和@Controller註釋給bean創建異常?
- 19. 自定義註釋不會在Spring bean工作
- 20. Spring Bean繼承使用註釋Bean參考返回問題
- 21. 注入Spring bean的默認值帶註釋
- 22. 如何注入Spring 3.0註釋的bean表單JBoss Seam 2.3 Action Bean
- 23. Java Spring註釋錯誤
- 24. Spring @Value註釋
- 25. @RequestMapping沒有@Controller註釋
- 26. 使用Spring註釋爲每個枚舉值創建一個bean
- 27. @Bean註釋不起作用的BeanPostProcessor
- 28. Spring註釋組件
- 29. Spring Controller的初始化方法(註釋版本)
- 30. 的Spring bean注入不工作DWR
並非所有可能的建議也是可取的。使用Web控制器作爲依賴關係是一個可怕的設計缺陷 – 2011-05-03 08:24:04
是的,但我回答了他的問題,並建議採用這種方法,並提出了一種替代方法。我認爲提供答案非常重要,即使它在設計層面上是不明智的。 – laher 2011-05-03 12:03:35
(問題是'可以',而不是'應該') – laher 2011-05-03 12:13:07