Coding/Back - Spring Framework

Spring MVC

꿀딴지- 2023. 8. 21. 13:50

디자인 패턴 : 자주 사용하는 설계 패턴을 정형화해서 유형별로 가장 최적의 방법으로 개발 할 수 있도록 정해둔 설계

알고리즘과 유사하지만 명확하게 정답이 있는 형태는 아니며, 프로젝트 상황에 맞추어 적용가능

(프레임워크는 뼈대라고 한다면, 디자인패턴은 방법론, 방향 과 같은 의미라고 할 수 있다)

싱글톤, Proxy, Front Controller 패턴 등

 

  • 디자인패턴의 장점
    • 뛰어난사람이 해결한 방법을 일반인도 해결할 수 있게함
    • 효율적으로 커뮤니케이션을 하는 것(서로의 생각 방향을 통일시킴) - 개발자 간의 원활한 소통
    • 소프트웨어 구조 파악 용이
    • 재사용을 통한 개발 시간 단축
    • 설계 변경 요청에 대한 유연한 대처

MVC? Model-View-Controller

특정한 역할을 어떻게 나눌 것인가? 에 대한 고민에서 시작

사용자 인터페이스로부터 비즈니스 로직을 분리하여 애플리케이션의 시각적 요소나 그 이면에서 실행되는 비즈니스 로직을 서로 영향 없이 쉽게 고칠 수 있는 애플리케이션을 만들 수 있다.

 

Model : 데이터 가공을 책임지는 컴포넌트

  • 사용자가 편집하길 원하는 모든 데이터를 가지고 있어야 한다.
  • 뷰나 컨트롤러에 대해서 어떤 정보도 알지 말아야 한다.
  • 변경이 일어나면, 변경 통지에 대한 처리방법을 구현해야 한다.

View : 사용자 인터페이스 요소

  • 모델이 가지고 있는 정보를 따로 저장해서는 안된다.
  • 모델이나 컨트롤러와 같이 다른 구성요소들을 몰라야 된다.
  • 변경이 일어나면 변경통지에 대한 처리방법을 구현해야 한다.

Controller : 데이터와 UI를 잇는 다리역할

  • 모델이나 뷰에 대해 알고 있어야 한다.
  • 모델이나 뷰의 변경을 모니터링 해야 한다.

MVC 패턴 사용 시 장점(결합도가 낮다)

  • 여러 개발자가 역할을 나눠서 모델, 컨트롤러, 뷰를 동시에 개발
  • 중복코드를 없앨 수 있고, 확장성있고 유연한 코딩이 가능
  • 기능별로 코드를 분리하여 가독성, 코드 재사용이 용이해지고
  • 유지보수와 확장성에 좋음

MVC 사용 예시

  • Python : Django
  • Javascript : Angular, Vue.js, React
  • Java : Spring Framework
  • Ruby : Ruby on Rails

Spring MVC

Controller : http req 처리

Model : 데이터 처리(작업의 처리 결과 데이터)

View : 사용자 UI

 

Spring MVC 프레임워크에서는 각 서블릿이 Controller가 되고 (Front Controller Pattern에 의해 Dispatcher Servlet이 있음)

Controller가 Model 과 처리하여 DispatcherServlet에 반환하면, DispathcherServlet이 View와 통신하게 되는 구조.

 - 뒤쪽의 Controller + Model 이 실질적으로 구현되는 부분이고, 이 부분에 대해 배우게 됨.

 - Model : 작업의 처리 결과 데이터, 클라이언트의 요청 사항을 구체적으로 처리하는 영역을 서비스 계층(Service Layer)이라고 하며, 실제로 요청 사항을 처리하기 위해 Java 코드로 구현한 것을 비즈니스 로직(Business Logic)

 

 

참고.

https://dailyheumsi.tistory.com/159

https://kotlinworld.com/326