搜尋

首頁  >  問答  >  主體

java - 在SpringMVC的Controller层处理业务逻辑好吗?

新接手的代码,发现在Controller里处理的逻辑就有几百行代码?又没有事务管理,这么做好吗?

天蓬老师天蓬老师2885 天前886

全部回覆(7)我來回復

  • 阿神

    阿神2017-04-17 18:03:27

    標準的MVC確實是直接在controller中實現業務邏輯,但實際專案裡,還是會建議在controller和資料庫操作之間封裝服務層。
    一方面,controller在對應不同的請求url,從功能上會存在很多重複;不好維護;
    另一方面,要考慮你的服務功能將來可能暴露給其他前端,比如其他應用接入,或者不同的終端(如APP、行動H5等);有些服務甚至可能單獨剝離出來獨立部署;

    回覆
    0
  • PHP中文网

    PHP中文网2017-04-17 18:03:27

    很不好,擴充起來很費勁,維護性也很差。

    controller應該是薄薄的一層,業務邏輯盡量後置在服務層去處理,在服務粒度、服務利用上也更加自由。

    回覆
    0
  • 天蓬老师

    天蓬老师2017-04-17 18:03:27

    當然不好啦,controller層只負責業務資料交互,業務邏輯都交給service層處理

    回覆
    0
  • PHP中文网

    PHP中文网2017-04-17 18:03:27

    現在我接手的專案Controller層也是奇大無比,一個方法上百行,裡面有多層if嵌套,感覺這樣最大的問題就是在後期維護時會很麻煩,需要理解之前的業務邏輯才能更改;個人感覺較好的方法是controller-service-dao,由service負責具體的邏輯操作,3者之間依次調用,彼此之間盡可能解耦;代碼要盡可能可擴展。

    回覆
    0
  • 天蓬老师

    天蓬老师2017-04-17 18:03:27

    雷雷

    回覆
    0
  • ringa_lee

    ringa_lee2017-04-17 18:03:27

    即使放到service 還是會一坨。 。還是需要其他的方法來規避 業務複雜的情況,程式碼可維護性差

    回覆
    0
  • PHP中文网

    PHP中文网2017-04-17 18:03:27

    今天讓同事看代碼.同事第一句話就是,你應該把controller這段代碼放在service中;=_=;
    主要看業務複雜度吧,如果很簡單的一句業務那沒有從controller到service ,再到dao;也要看整個團隊的開發規範是如何;

    回覆
    0
  • 取消回覆