Spring Initializer로 Spring Boot 프로젝트를 쉽게 생성하는데, 어딘지 모르게 죄책감이 든다.

나는 과연 Spring과 Spring Boot의 차이를 알고 매일 이렇게 쉽게 이용하는 것인가.

누군가 물어보면 쉽게 대답할 수 있는가? 했을 때 자신이 없어 이참에 알아보기로 하였다. 

 

Spring

  • 자바를 더 쉽게 사용할 수 있게 해주는 오픈소스 프레임워크 
    • 중복코드의 사용률을 줄여주고 비즈니스 로직을 더 간단하게 한다. 
      • 프레임워크? 자주 쓰일만한 기능들을 한데 모아 놓은 클래스들의 집합으로 기본적인 설계나 필요한 라이브러리를 제공한다. 
  • 특징
    • 의존성 주입(Dependency Injection)
      • 구성요소 간의 의존 관계가 소스코드 내부가 아닌 외부의 설정 파일을 통해 정의되는 방식
      • 어노테이션, 설정파일을 통해 
    • 제어의 역전(IOC, Inversion Of Control)
      • 객체 생명주기 관리를 개발자가 하지 않고 컨테이너가 대신 해주는 것
        • 필요한 부분을 적절한 상황에 따라 자유롭게 교체할 수 있음
          • MyBatic를 쓰던 JPA를 쓰던 Oracle Database를 쓰던...
    • 관점 지향 프로그래밍 (Aspect Object Programming)
      • 로깅, 트랜잭션, 보안 등 여러 모듈에서 공통적으로 사용하는 기능을 분리하여 관리
    • POJO (Plain Old Java Object)
      • 객체 지향 원리에 충실하되, 특정 환경에 종속되지 않고 순수 자바로 설계된 객체

Spring Boot

  • 스프링 프레임워크를 기반으로 바로 실행가능한 애플리케이션을 쉽게 만들도록 도와줍니다. 스프링 관련된 복잡한 설정을 자동으로 처리해서 개발자는 최소한의 설정만 진행하도록 할 수 있게 하는 스프링 프레임워크의 서브 프로젝트
    •  (단독 실행 가능 스프링애플리케이션 생성 + 최소한의 초기 스프링 구성)
  • 생성 배경
    • 스프링으로 애플리케이션을 개발하려면 사전에 많은 작업을 해야 했음 (비즈니스 로직에만 더 집중하고 싶음)
    • 웹 애플리케이션 개발에 필요한 라이브러리와 그 라이브러리에 종속된 라이브러리들을 개발자가 일일이 추가해야만 했음
      • 버전이 다르거나 충돌이 나는 경우가 있어 개발 환경 구성에 어려움이 존재하였음
    • 비즈니스 로직보다 개발환경 구성 및 스프링의 기능 구성에 시간을 쏟게 됨
      • Transaction Manager
      • Hibernate - spring-boot-starter-data-jpa
      • Entity Manager
      • Spring MVC
  • 장점
    • 프로젝트에 따라 자주 사용되는 라이브러리들이 미리 조합됨
      • Spring MVC, Jackson Databind, Hibernate 코어 및 Log4j
    • 복잡한 설정을 자동으로 처리 
    • 내장 서버를 포함해서 톰캣과 같은 서버를 추가로 설치하지 않아도 바로 개발이 가능
    • JAR파일로 웹 애플리케이션 개발이 가능 
      • 스프링의 jar 파일이 클래스 패스에 있는 경우 Spring Boot는 Dipatcher Servlet으로 자동 구성

 

 

출처 

책 - 스프링부트 시작하기 

https://goddaehee.tistory.com/238

https://jerryjerryjerry.tistory.com/62

 

 

+ Recent posts