2014-10-22 3 views
0

저는 처음으로 "큰"스프링 MVC 프로젝트를 학습 목적으로 개발 중입니다. 나는 모든 것을 혼자서 배우고있다 (물론이 놀라운 공동체 덕분에).SPring MVC - 여러 컨트롤러

궁금한 점은 ... 내 디자인이 "올바른/유효한"것입니까? 지금까지 ModelAttribute (메소드에 첨부되어 있음) 때문에 View/Page마다 하나의 Controller을 생성하고 있습니다.

괜찮습니까? 다른 방법으로 시작해야할까요? 이 문제에 "공식적인"패턴이 있습니까?

답변

2

시작하려면 ModelAttribute 사용을 기반으로 웹 프로젝트를 만드는 것으로 가정합니다. MVC (모델, 뷰, 컨트롤러) 규칙을 따르기를 원합니다. "모델"은 조작중인 데이터입니다. 이 데이터는 서비스 계층을 통해 검색해야합니다. 그런 다음 컨트롤러는 서비스 메서드를 호출하여 데이터를 가져와 컨트롤러가 데이터에 대해 완전히 독립적 인 상태로 만들어야합니다. 데이터 구조를 자유롭게 변경할 수 있기 때문에 좋습니다. MySQL에서 MongoDB로 마이그레이션 할 때 컨트롤러 변경에 대한 걱정없이 서비스 레이어 만 변경하면됩니다. 또한 컨트롤러가 특정 인스턴스에서 여러 가지 서비스를 사용할 수 있습니다. 컨트롤러가 클라이언트로부터 요청을받습니다. 웹 사이트 사용자의 페이지 요청, GET/POST 요청 등과 같은 작업을 수행하고 일반적으로 서비스 계층을 통해 데이터를 가져 오거나 업데이트 한 다음보기를 반환합니다. 각 컨트롤러는 많은 요청을 처리 할 수 ​​있으며 많은 뷰를 렌더링 할 수 있습니다. 기능별로 컨트롤러를 분리하는 것이 좋습니다. 예를 들어 웹 사이트에 대해 두 개의 섹션 (Admins 및 Guests)이있는 경우 하나의 컨트롤러를 사용하여 관리 요청을 처리하고 다른 컨트롤러를 사용하여 게스트 요청을 처리 할 수 ​​있습니다. 이러한 각 컨트롤러는 Admins/Guests의 모든 요청을 적절히 처리 할 수 ​​있습니다. 컨트롤러에 대해 다소 혼란 스러울 수 있습니다. 컨트롤러의 각 메서드은 단일 요청/뷰에 바인딩되지만 컨트롤러에는 이러한 메서드가 많이있을 수 있습니다.

배우고 계신다면 AngularJS와 같은 클라이언트 측 MVC 프레임 워크를 살펴 보시기 바랍니다. Angular는 매우 쉬운 데이터 바인딩 및 조작 옵션을 허용하며 RESTful 웹 서비스를 매우 쉽게 만들 수 있습니다.

+0

답변을 제공해 주셔서 감사합니다. 내가 제안하는대로 AngularJS를 살펴 보겠습니다. 다른 한편, 실제로 하나의 단일보기에 하나의 컨트롤러를 사용하는 것이 맞는지 궁금합니다. 지금까지, 나는 이렇게하여 하나의 (GET) 또는 2 개의 메소드 (GET & POST)를 가진 여러 개의 'Controllers'를 얻었다. – kazbeel

+1

예, 뷰 당 하나의 컨트롤러를 사용하는 데는 아무런 문제가 없습니다. 그러나 많은 뷰를 추가하면 많은 컨트롤러가 생기므로 프로젝트를 확장하기가 어려워지며 (인증을 수행하면 빠르게 엉망이 될 수 있습니다. 권한 부여). 기능별로 컨트롤러를 나누면 코드를 관리하는 것이 더 쉽지만, 뷰 당 하나의 컨트롤러를 사용하는 것이 기술적으로 잘못된 것은 아닙니다. – holtc

관련 문제