1. [스프링 입문] - Spring과 MVC

김하나·2023년 5월 2일

Spring Boot

목록 보기
1/16
post-thumbnail

[설정]

Project: Gradle - Groovy Project
Spring Boot: 3.0.5
Language: Java
Packaging: Jar
Java: 17
Dependencies: Spring Web, Thymeleaf


Spring?

Spring이란?

  • 여러가지 기술들의 모음
    (스프링 프레임 워크, 스프링 부트, 스프링 데이터, 스프링 세션, 스프링 시큐리티, 스프링 Rest Docs, 스프링 배치, 스프링 클라우드 등등등..스프링 환경 자체 모두를 스프링이라 할 수 있음!)
  • 스프링이라는 단어는 문맥에 따라 다르게 사용할 수 있음
    ・스프링 DI 컨테이너 기술
    ・스프링 프레임 워크
    ・스프링 부트, 스프링 프레임 워크 등을 포함한 생태계
  • 스프링 핵심 개념! → 왜 만들었는가?!

    ・자바 언어 기반의 프레임워크

    ・자바 언어의 특징 = 객체지향!

    ⇒ 스프링은 객체 지향 언어가 가진 특징을 잘 살려냄

    (=좋은 객체 지향 어플리케이션을 개발 할 수 있게 도와줌)

스프링 프레임 워크

  • 핵심기술 : 스프링 DI 컨테이너, AOP, 이벤트, 기타등등
  • 웹 기술: 스프링 MVC, 스프링 WebFlux
  • 데이터 접근 기술: 트랜잭션, JDBC, ORM 지원, XML 지원
  • 기술 통합: 캐시, 이메일 , 원격 접근, 스케줄링
  • 테스트: 스프링 기반 통합, 단위 테스트 지원

MVC

-> 애플리케이션을 개발할 때 Model과 View, Controller 세 가지 역할로 구분하여 구현하는 디자인 패턴

애플리케이션을 개발할 때 Model과 View, Controller 세 가지 역할로 구분하여 구현하는 디자인 패턴

  • MVC 패턴을 가진 시스템의 각 컴포넌트는 자신이 맡은 역할만 수행한 후 다른 컴포넌트로 결과만 넘겨주면 되기 때문에 시스템 결합도를 낮출 수 있음

  • 사용자가 controller를 조작하면 controller는 Model을 통해서 데이터를 가져오고, 그 정보를 바탕으로 View를 제어해서 사용자에게 전달하게 됨 (← 결과 화면을!)

  • 비지니스 처리 로직인 Model과 UI영역인 View는 서로의 존재를 인지하지 못하고, Controller가 중간에서 Model과 View의 연결을 담당함

     ❕Model과 View를 분리함으로써 서로의 의존성을 낮추고 독립적인 개발을  가능하게 함
    
     ❕Controller는 View로 부터 들어온 사용자 요청을 해석하여 Model을 업데이트 하거나, Model로 부터 데이터를 받아 View로 전달하는 작업을 수행함
  • Controller는 View와 도메인 Model의 데이터를 주고 받을 때 별도의 DTO를 주로 사용

    → 도메인 객체를 View에 직접 전달 할 수는 있지만, 민감한 도메인 비즈니스 기능이
    
      노출될 수  있으며 Model과 View 사이에 의존성이 생기기 때문에 DTO를 사용 
    
      (소규모인 경우 DTO 사용이 불필요한 경우도 있음)

MVC의 전체적인 흐름~

  1. 사용자가 웹 사이트에 접속
  2. Controller는 사용자가 요청한 웹 페이지를 서비스 하기 위해 Model을 호출
  3. Model은 데이터 베이스나 파일등과 같은 데이터 소스를 제어한 후 그 결과를 리턴
  4. Controller는 Model이 리턴한 결과를 View에 반영
  5. 데이터가 반영됨 View는 사용자에게 보여짐!

2개의 댓글

comment-user-thumbnail
2023년 5월 2일

이거 보면 스프링 마스터 가능한가요?

1개의 답글