Spring - 4. 관심사의 분리와 MVC 패턴

병호·2023년 8월 7일
0

Spring

목록 보기
4/16
post-custom-banner


위 코드를 관심사로 분리하면

입력부분

계산부분

출력부분 총 3가지로 나뉜다.
관심사는 관심을 갖고 해야할 작업을 의미함.

OOP 5대 설계 원칙인 SOLID 중에서 S인 SRP(단일책임의원칙)에 따르면 하나의 메서드는 하나의 책임만 져야 한다. 하지만 위 main메서드에서는 총 3개의 책임(관심사)을 가지고 있기 때문에 분리해주어야 객체지향적으로 좋은 설계가 된다. 좋은 객체지향적 설계를 위해서는 관심사의 분리, 자주 변하지않는것, 변하는것의 분리, 중복코드의 분리가 필요하다.


위 코드를 다음과 같이 바꾸면

request객체의 getParameter메서드를 쓰지 않고 개별 매개변수로 받아서 객체의 값을 꺼내쓴다.(공통코드의 분리)
공통코드를 분리함으로써 관심사가 하나 사라진다.

위 코드에서는 매개변수로 받은 year, month, day, yoil을 바로 받아쓸수 없다. 이유는 관심사가 분리되었기에 다른 메서드이기 때문이다. 그래서 중간에 model 객체가 필요하다. model 객체를 만들어놓고 처리부분의 결과출력에 필요한 값들을 객체안에 저장한다. 그리고 model 객체를 출력부분에 전달해서 출력한다. 처리부분은 Controller, 출력부분은 View, 중간에서 데이터를 주고받을수 있는 객체가 Model.
이를 분리해서 사용하는게 MVC 패턴이다.


위 코드에서 뷰 이름을 반환하는 경우에는 return 값을 String으로 하고 yoil을 리턴하면 yoil.jsp파일의 값을 읽어서 출력한다. void의 경우에는 model 객체를 생성하고 매개변수로 받아서 addAttribute 메서드를 사용해서 값을 입력받으며 뷰이름은 @RequestMapping을 통해 매핑된 url주소가 뷰이름이된다. ModelAndView는 객체를 생성해서 addObject메서드로 입력값을 저장하고 setViewName메서드로 작업결과를 보여줄 View를 지정하고 return 값을 ModelAndView로 반환한다. 이때, 주의할점은 return 타입이 void가 아닌 ModelAndView로 해주어야 한다는 점이다.

profile
안녕하세요
post-custom-banner

0개의 댓글