Spring/MVC

학습 // Spring // MVC

문스코딩 2018. 8. 21. 01:01
업데이트 :: 2018.08.09



스프링 MVC

  • Model : 애플리케이션 상태(데이터)나 비즈니스 로직을 제공
  • View : 모델이 보유한 애플리케이션 상태(데이터)를 참조하고 클라이언트에 반환할 응답데이터를 생성
  • Controller : 요청을 받아 모델과 뷰의 호출을 제어, 요청과 응답의 처리흐름을 제어

웹 애플리케이션 개발특징

  • POJO(Plain Old Java Objecct) 구현
    • 컨트롤러나 모델등의 클래스는 POJO 형태로 구현
    • 특정 프레임워크에 종속적일 필요가 없어 단위테스트에 유리
  • 애너테이션을 이용한 정의 정보 설정
    • 요청 매핑과 같은 각종 정보를 설정파일이 아닌 애너테이션 방식으로 설정
    • 비즈니스 로직과 그 로직을 수행하기 위한 각종 정의정보를 자바 파일안에서 함께 기술
  • 유연한 메서드 시그니처 정의
    • 컨트롤러 클래스의 메서드 매개변수에는 처리에 필요한 것만 골라서 정의
    • 인수에 지정할 수 있는 타입도 다양한 타입이 지원
    • 프레임워크가 인수에 전달하는 값을 자동으로 담아주거나 변환하기 떄문에 사양변경이나 리팩토링에 강함
  • Servlet API 추상화
    • 서블릿 API를 추상화하는 기능 제공
      • HttpServletRequest, HttpServletResponse, HttpSession 등의 API
    • 컨트롤러 클래스 구현에서 서블릿 API를 직접 사용하는 코드가 제거
      • 컨트롤러 클래스의 테스트가 서블릿 API를 사용할때보다 상대적으로 쉬움
  • 뷰 구현 기술의 추상화
    • 컨트롤러는 뷰 이름을반환
    • 스프링 MVC는 뷰 이름에 해당하는 화면이 표시
    • 컨트롤러는 뷰의 이름만 알면 되기 때문에 그 뷰가 어떤 구현 기술로 만들었는지 모름
      • JSP, 타임리프, 서블릿 API, 프리마커 등등
  • 스프링 DI 컨테이너와의 연계
    • DI컨테이너 상에서 동작하는 프레임워크
    • DI컨테이너가 제공하는 DI나 AOP같은 구조를 그대로 활용

구현예제

@Controller // DI 컨테이너와의 연게
public class WelComeController { // POJO (=프레임워크에서제공하는 인터페이스 구현은 불필요)

  @Autowired // DI 컨테이너와의 연게
  MyService myService;

  @RequestMapping("/") // 애너테이션에서 정의정보를 지정
  public String home(Model model)  { // 유연한 인수 정의
    Data now = myService.getCurrentData();
    model.addAttribute("now", now); // 서블릿 API에 의존하지 않는 구현
    return "home"; // 부 구현기술에 의존하지 않는 뷰 이름 지정
  }
}

MVC 특징

  • 풍부한 확장 포인트 제공
  • 엔터프라이즈 애플리케이션에 필요한 기능 제공
  • 서드파티 라이브러리와의 연계 지원

Created by MoonsCoding

e-mail :: jm921106@gmail.com

반응형

'Spring > MVC' 카테고리의 다른 글

학습 // Spring // MVC // Async  (0) 2018.08.21
학습 // Spring // MVC // FileUpload  (0) 2018.08.21
학습 // Spring // MVC // Session  (0) 2018.08.21
구현 // Spring // MVC // MVC tutorial  (0) 2018.08.21
학습 // Spring // MVC // 구조  (0) 2018.08.21