Java/Spring

[스프링] 스프링 프레임워크 vs 스프링 부트

ImYena 2021. 9. 18. 20:10
728x90

스프링 프레임워크(Spring Framework)

  • 자바 플랫폼을 위한 오픈 소스 애플리케이션 프레임워크
  • 간단히 스프링(Spring) 이라고도 함
  • 동적인 웹 사이트 개발을 위한 여러가지 서비스 제공
  • 대한민국 공공기관의 웹 서비스 개발 시 권장 사용하고 있는 전자정부 표준프레임워크의 기반 기술로서 쓰임

 

장점

  • 경량 컨테이너
    • 스프링은 객체를 담고 있는 컨테이너로써, 자바 객체의 생성과 소멸과 같은 생명 주기 관리 및 언제든 필요한 객체를 가져다 사용할 수 있도록 지원
  • IoC(Invertion of Control, 역제어)
    • 스프링 프레임워크의 핵심적인 기능
    • 스프링 컨테이너(Spring Container) or IoC 컨테이너
자바의 객체 생성 및 의존 관계에 있어 모든 제어권은 개발자에게 있었지만, 서블릿(Servlet)과 EJB(Enterprise JavaBeans)가 나타나면서 기존의 제어권이 서블릿 컨테이너 및 EJB 컨테이너에게 넘어가게 된다.
하지만 모든 객체의 제어권이 넘어간 것이 아닌 서블릿, EJB에 대한 제어권을 제외한 나머지 객체 제어권은 개발자들이 담당하고 있다.
스프링 프레임워크에서도 객체에 대한 생성과 생명주기를 관리할 수 있는 기능을 제공하고 있어, 스프링 컨테이너 혹은 IoC 컨테이너 라고 부르기도 한다.
  • DI(Dependency Injection, 의존성 주입)
    • 별도의 설정 파일을 통해 객체들 간 의존 관계 등 설정 가능
      • 객체들 간 느슨한 결합 유지와 직접 의존하는 객체 생성이나 검색의 필요성이 없어짐
  • AOP(Asepct-Oriented Programming, 관점 지향 프로그래밍
    • 문제를 바라보는 관점을 기준으로 프로그래밍하는 기법
    • 문제를 해결하기 위한 핵심 관심 사항과 전체에 적용되는 공통 관심 사항을 기준으로 프로그래밍
      • 공통 모듈을 여러 코드에 쉽게 적용 가능ㅈ

 

단점

  • "스프링은 설정이 반이다." 환경설정이 복잡

 

스프링 프레임워크 버전 선택

  • Spring Framework 5.3.x : JDK 8-19 (expected)
  • Spring Framework 5.2.x : JDK 8-15
  • Spring Framework 5.1.x : JDK 8-12
  • Spring Framework 5.0.x : JDK 8-10
  • Spring Framework 4.3.x : JDK 6-8

 

스프링 프레임워크 모듈(라이브러리, jar) 종류

spring-aop spring-context-indexer spring-instrument spring-orm spring-web
spring-aspects spring-context-support spring-jcl spring-oxm spring-webflux
spring-beans spring-core spring-jdbc  spring-r2dbc  spring-webmvc  
spring-context spring-expression  spring-jms  spring-test  spring-websocket
    spring-messaging  spring-tx  

 

스프링 프레임워크 도큐먼트

 

Index of /spring-framework/docs

 

docs.spring.io

 

스프링 부트(Spring Boot)

  • 스프링 프레임워크의 복잡한 환경설정을 자동화하여 스프링을 사용할 수 있도록 한 것
  • 스프링 프레임워크 라는 큰 틀에 속하는 도구(스프링 > 스프링 부트)

 

장점

  • Embed Tomcat
  • Spring Boot Starter를 통한 의존성(Dependency) 자동화
  • xml 설정x
  • .jar 파일을 이용해 자바 옵션만으로 손쉬운 배포 가능
  • Spring Actuaor를 이용한 애플리케이션 모니터링 및 관리

 

Spring Boot Starter

특정 목적을 달성하기 위한 의존성 그룹

 

Starter 명명 규칙

spring-boot-starter-*

예를 들어, jpa가 필요할 경우 메이븐(pom.xml)이나 그래들(build.gradle)에 'spring-boot-starter-jpa'만 추가해주면 필요한 라이브러리를 알아서 받아옴

728x90
반응형