[Spring] Spring Boot

Jeon817·2023년 4월 14일

Spring

목록 보기
1/11

[Spring Boot 란?]

  • Spring으로 애플리케이션을 만들 때 필요한 설정을 간편하게 처리해주는 별도의 프레임워크 입니다. 때문에 Spring Boot를 사용하면 기존에 어려운 초기 설정을 할 필요없고 비즈니스 로직을 구현하는데만 신경쓰면 됩니다.

[Spring Boot 및 서버]

  • 서버는 "새로운 데이터를 처리하는 부분(New Data)", "서비스 로직을 처리하는 부분(Service Logic)", "기존의 데이터를 이용하는 부분(Old Data)"으로 구성되어 있습니다. 그리고 이 부분들은 스프링과 스프링부트에서 각각의 레이어로 나뉘어져 있습니다.

<Presentation 계층>

  • 사용자와 상호 작용 처리 계층
  • CLI, HTTP 요청, HTML 처리 등을 담당합니다.
  • HTTP 요청 처리 및 HTML 렌더링에 대해 알고 있는 웹 계층
  • 흔히 말하는 MVC (Model / View / Controller) 도 이 계층에 속합니다.
  • 우리가 URL을 매핑해서 특정 메서드가 해당 URL로 요청이 올 때마다 호출되는 부분이고 스프링에서는 @Controller 어노테이션을 사용하여 표현합니다.

<Domain(Business or Service) 계층>

  • 서비스/시스템의 핵심 로직
  • 유효성 검사 및 계산을 포함하는 Business 논리 계층
  • 애플리케이션이 수행해야하는 도메인과 관련된 작업들을 담당한다.
  • 입력/저장된 데이터를 기반으로 계산
  • Presentation 계층에서 받은 데이터의 유효성 (Validation) 검사
  • 어떤 Data Access 를 선택할지 결정
  • 스프링에서는 @Service 어노테이션을 사용해서 표현합니다.

<Data Access(Persistence) 계층>

  • DAO 계층
  • Database / Message Queue / 외부 API와의 통신 등 처리
  • 데이터베이스 또는 원격 서비스에서 영구 데이터를 관리하는 방법을 분류하는 데이터 접근 계층
  • 우리의 데이터베이스, 혹은 데이터를 저장하는 데이터 소스는 서버 외부에 별개로 존재하는 경우가 매우 많고, 그러한 데이터 소스와의 소통을 해주는 계층
  • 스프링에서는 @Repository 어노테이션을 사용해서 표현합니다.

[각각의 계층과 스프링에서의 해당 어노테이션 흐름]
클라이언트 -> Controller -> Service -> Repository(DB)
-> 요청 받은 데이터를 찾아 Repository는 -> Service -> Controller -> 클라이언트

New Data -> Controller
Service Logic -> Service
Old Data -> Repository


[Spring Framework vs Spring Boot]

  • Spring Framework와 Spring Boot의 가장 큰 차이점은 Auto Configuration의 차이인 것 같습니다. Spring은 프로젝트 초기에 다양한 환경설정을 해야 하지만, Spring Boot는 버전 관리를 비롯한 설정의 많은 부분을 자동화하여 사용자가 편하게 스프링을 활용할 수 있도록 돕습니다. 간단하게 spring boot starter dependency만 추가하면 설정은 끝나고, Spring Boot는 tomcat이 내장되어 있어 서버를 바로 실행할 수 있습니다.

  • 설정 측면

    • SpringFramework의 설정은 spring-web, spring-webmvc 외에도 수많은 의존성을 하나 하나 설정해줘야하며 설정시 하나씩 모든 어노테이션을 작성 빈을 등록 해줘야합니다. 즉, Spring으로 웹 어플리케이션 개발 시 의존성들을 일일이 찾고, 호환되는 버전에 맞춰 의존성을 추가하는 번거로움이 존재합니다.

    • SpringBoot는 이런 번거로움을 줄이기 위해 Easy Dependency Management라고 불리는 Springboot Starter 의존성을 도입했습니다.
      스프링 프레임워크에서 하나씩 설정해줘야 했던 설정 의존성을 해당 스프링에 버전에 맞춰 한번에 주입해주는 편리함을 제공합니다.
      그리고 SpringBootApplication 애노테이션을 붙이기만하면 EnableAutoConfiguration 애노테이션에 의해 spring.factories 안에 들어있는 수 많은 자동 설정들이 조건에 따라 적용이 되어 수 많은 Bean이 생성되며 스프링 부트 애플리케이션이 실행될 수 있습니다.

  • 배포 측면

    • SpringFramework는
      프로젝트가 단독 실행이 불가능한 war 파일로 압축되며 단독 실행이 불가능하기 때문에 배포시에 Web Application Server에 담아 배포합니다.
      WAS에 의해 실행되어야 하므로 배포 스크립터 파일(web.xml) 을 작성해줘야하며 별도의 WAS를 설정해주는 과정이 필요합니다.

    • 반면에 SpringBoot는
      Embedded Servlet Container Support, Tomcat 같은 내장 Web Application Server를 가지고 있기 때문에 웹 애플리케이션을 jar 파일로 압축 후 실행하는 것 만으로도 간편하게 배포할 수 있습니다.

0개의 댓글