2016-02-26 16 views

Trả lời

7

Mô hình - không phải là Datab ase, không phải là Repositories, không phải là Entity. Mô hình trừu tượng, chứa tất cả dữ liệu cần được hiển thị. Và mỗi View đều có mô hình riêng. Bạn có thể xem xét Modelvùng chứa cho dữ liệu giữa ControllerView.

Trong mô hình mùa xuân là ModelMap thông số của phương pháp điều khiển.

Bộ điều khiển - chuẩn bị Model, để chuyển nó tới View. Nếu mô hình khá đơn giản, Controller có thể tự làm.

Nhưng hầu hết các mô hình đều chứa nhiều dữ liệu. Điều này có thể là nhiều thực thể từ cơ sở dữ liệu, dữ liệu từ cấu hình, v.v.Trong trường hợp này, Bộ điều khiển sử dụng tầng cấp thấp hơn: Service, Repository. Tất cả họ đều giúp Сontroller để xây dựng mô hình cho View.

upd: Đó là mục đích của Controller để kết nối ViewModel. Controller tạo và điền vào Model, sau đó chọn View và chuyển số này được tạo Model tới View. Đó là cách Mô hình và Chế độ xem nhận kết nối.

Trong bộ điều khiển lò xo là ControllerRestController.

Xem - là điểm cuối cùng trong đó dữ liệu từ Model (được chuyển từ Controller) sẽ được hiển thị cho người dùng. Nhưng một vai trò khác của View là nhận lệnh từ người dùng và chuyển nó đến Controller.

Vào mùa xuân, đây có thể là chế độ xem của bất kỳ công cụ xem nào: JSP, Freemaker, Thymeleaf.


Lưu ý: thường là, Controller không sử dụng trực tiếp Repository. Theo truyền thống, Controller hoạt động với ServiceService sử dụng Repository để lấy dữ liệu từ cơ sở dữ liệu. Vì vậy, quan hệ như sau: View < - Controller ->Service ->Repository

+0

Cảm ơn bạn đã trả lời rất chi tiết. Tôi hiểu hầu như tất cả ngoài cách Mô hình và Chế độ xem được kết nối như thế nào? Lớp dịch vụ có thay đổi mô hình mà sau đó làm thay đổi chế độ xem không? Bạn có thể mở rộng trên: Controller-> Service-> Repository để bao gồm khung nhìn không? – java123999

+0

Dịch vụ không biết gì về Mô hình và Chế độ xem. Chỉ Bộ điều khiển mới biết tất cả. Mục đích của Bộ điều khiển chính là kết nối tất cả các thành phần với nhau. Chỉ có Controller mới có thể thay đổi Model. Chỉ có Bộ điều khiển mới có thể yêu cầu Dịch vụ làm điều gì đó. Ví dụ, bộ điều khiển có thể yêu cầu Dịch vụ tải thực thể từ cơ sở dữ liệu. Sau đó Controller sẽ thêm Enitity này (hoặc nhiều thực thể) vào Model và sẽ chuyển Model này đến View. Và Chế độ xem sẽ hiển thị Mô hình này, nhưng Chế độ xem thậm chí không có ý tưởng, trong đó từ Bộ điều khiển nhận dữ liệu được lưu trữ trong Mô hình. –

+0

Cũng như Dịch vụ không biết điều gì cho Bộ điều khiển nhận dữ liệu. Vì vậy, nó cung cấp ít phụ thuộc giữa các thành phần. –

4

Bộ điều khiển chấp nhận yêu cầu HTTP và thường tải hoặc lưu một số dữ liệu (từ dịch vụ hoặc DAO) và trả về phản hồi HTTP. Phản hồi này có thể là một chuyển hướng, hoặc một khung nhìn, hoặc một số JSON hoặc một tệp nhị phân.

Bộ điều khiển có thể sử dụng dịch vụ, nhưng nên tránh có nhiều logic của riêng nó. Nó cũng có thể trực tiếp sử dụng các đối tượng truy cập dữ liệu, nếu không có logic dịch vụ cần thiết.

Mô hình là bất kỳ thông tin nào mà chế độ xem cần thực hiện công việc của mình. Nó không nhất thiết liên quan đến cơ sở dữ liệu. Ví dụ, bạn có thể có một mô hình trong một mẫu đăng ký, với địa chỉ email và các trường confirmEmailAddress. Bạn không lưu trữ một trường confirmEmailAddress trong db của bạn, vì vậy chúng không có mối quan hệ 1-1 giữa các bảng db và các mô hình. Ngoài ra, mô hình của bạn có thể là dữ liệu cho một phép tính đơn giản không được duy trì.

+0

"Mô hình là thông tin bất kỳ cần xem để thực hiện công việc của mình" - Bạn có thể mở rộng điều này không? Ngoài ra, nếu bạn đang bao gồm một Reposiory dữ liệu mùa xuân trong ứng dụng của bạn, tôi giả sử nó sẽ được xem như là lớp Model? Cảm ơn câu trả lời của bạn – java123999

+1

Mô hình chỉ là bản đồ các đối tượng. Các đối tượng này có thể hoặc không thể là thực thể. Nếu bạn đang sử dụng Dữ liệu mùa xuân, thì có, bạn có thể thêm danh sách các thực thể vào mô hình của mình, nhưng bạn cũng có thể thêm các nội dung khác, như dữ liệu cho trình đơn thả xuống, tất cả trong cùng một mô hình. –

+0

Cảm ơn bạn đang bắt đầu có ý nghĩa, về mặt quan điểm thì về cơ bản nó là JSP hoặc một cái gì đó tương tự? Tôi cũng tự hỏi làm thế nào quan điểm trong MVC liên kết đến trang thực tế trên trình duyệt mà người dùng xem? – java123999

-1

Theo tôi, nó phải là:

Mẫu = Dịch vụ (buisness logic), Repositories, các lớp Entity

khiển lớp = Nghỉ ngơi điều khiển

Xem = JSP/FreeMarker

Các vấn đề liên quan