Spring

김영환·2023년 9월 22일
0

Spring

목록 보기
1/4

Framwork란?

  • '뼈대나 근간'을 이루는 코드들의 묶음

  • 프로그램의 기본 흐름이나 구조를 정하고, 이 구조에 자신의 코드를 추가하는 방식으로 개발할 수 있도록 하는 프로그래밍의 기본 틀을 의미

  • 개발에 필요한 구조가 제공되고, 여기에 필요한 부분을 조립하는 형태로 개발이 진행된다.

    프레임워크의 구조

그렇다면 라이브러리란?

  • 라이브러리란 자주 사용되는 조직을 재사용하기 편리하도록 잘 정리한 일련의 코드들의 집합이다

둘의 차이점이 뭐야?

  • 비유로 표현하자면 프레임워크는 자동차의 프레임, 즉 기본적으로 구성하고 있는 뼈대를 말하고 라이브러리는 자동차의 기능을 하는 부품을 의미할 수 있다.

  • 소형차를 SUV로 만들 수 없는 것 처럼 한 번 정해진 프레임을 바꿀 수 없다(Framework)

  • 그러나 바퀴나 선루프, 헤드라이트 등은 비교적 다른 종류로 쉽게 바뀔 수 있다(라이브러리)

  • 그래서 프레임워크를 바꾸겠다는 소리는 프로젝트를 처음부터 다시 하겠다는 의미가 될 수 있다.

Spring이란?

  • 스프링 프레임워크는 자바 플랫폼을 위한 오픈소스로 애플리케이션 프레임워크로서 간단히 스프링이라고도 불린다.

  • 동적인 웹 사이트를 개발하기 위한 여러 가지 서비스를 제공하고 있다.

  • 한마디로 프레임워크의 한 종류이다.

Spring Boot도 있던데?

  • 똑같이 프레임워크로 스프링은 초기 설정이 매우 힘들지만 부트는 이런 설정들이 굉장히 쉽다.

  • 쉬운 만큼 스프링에 있는 기능들이 부트에는 없을 수 있다.

Spring Boot 설정

1. Embed Tomcat(embedded tomcat)

  • 스프링 부트는 내장형 톰캣을 가지고 있기 때문에 별도의 톰캣을 설정할 필요가 없어졌으며, 그렇기 때문에 독립적으로 실행 가능한 jar로 손쉽게 배포가 가능해졌습니다.

2. AutoConfigurator

  • 공통적으로 필요한 DispatcherServlet과 같은 설정을 어노테이션을 이용하여 대신할 수 있도록 해줍니다.
  • 스프링 부트의 main메서드는 @SpringBootApplication 어노테이션을 가지고 있는데 이것은 ComponentScan + configuration + EnableAutoConfiguration을 합친 어노테이션이라고 볼 수 있습니다.

Maven/Gradle

  • 프로젝트에 필요한 의존성을 관리하고 빌드의 라이프사이클을 관리해주는 툴이다.

  • 과거에는 Maven을, 최근에는 Gradle을 사용하는 추세이다.

DispatcherServlet

  • 스프링 MVC도 프론트 컨트롤러 패턴으로 구현되어 있다.

  • 스프링 MVC의 프론트 컨트롤러가 바로 DispatcherServlet이다.

  • 그리고 이 DispatcherServlet이 바로 스프링 MVC의 핵심이다.

  • DispatcherServlet도 부모 클래스에서 HttpServlet을 상속 받아서 사용하고, 서블릿으로 동작한다.

  • DispatcherServlet -> FrameworkServlet -> HttpServletBean -> HttpServlet

프레임워크 흐름

  • 핸들러 조회 : 핸들러 매핑을 통해 요청 URL에 매핑된 핸들러(컨트롤러)를 조회한다.

  • 핸들러 어댑터 조회 : 핸들러를 실행할 수 있는 핸들러 어댑터를 조회한다.

  • 핸들러 어댑터 실행 : 핸들러 어댑터를 실행한다.

  • viewResolver 호출 : 뷰리졸버를 찾고 실행한다

  • view 반환 : 뷰 리졸버는 뷰의 논리이름을 물리이름으로 바꾸고, 렌더링 역할을 담당하는 뷰 객체를 반환한다.

    forward, redirect
    기본방식 : forward방식이다.

Model이란

  • Controlerr에서 데이터를 Model에 담는다. view는 Model에 담겨있는 데이터만 쏙쏙 골라서 화면에 바인딩 해준다.

  • Model객체는 컨트롤러에서 데이터를 생성해 이를 JSP, HTML 즉, view단에 전달하는 역할을 한다.

  • HashMap형태를 갖고 있고, 키(key)와, 밸류(value) 값을 저장한다. request.setAttribute(...)과 비슷한 역할을 한다.

ModelAndView

  • model에서 view영역이 좀 더 확장

  • Model과 view를 동시에 설정이 가능한 컨트롤러는 Model과 view가 모두 리턴 가능

Model vs ModelAndView

  • 데이터만 저장한다 vs 데이터와 이동하고자 하는 viewPage를 같이 저장한다.

계층 구조

  • 컨트롤러 : 웹 MVC의 컨트롤러 역할

  • 서비스 : 핵심 비지니스 로직 구현

  • 레파지토리 : 데이터베이스에 접근

  • 도메인 : 비지니스 도메인 객체 예)회원,주문,쿠폰 등등

    일반적인 계층 구조

profile
개발

0개의 댓글