Spring과 SpringBoot 프레임워크 (+라이브러리)

jiji·2023년 11월 23일

Backend

목록 보기
3/4

spring 과 springBoot 는 스프링 프레임워크를 기반으로 한 자바 웹 개발 프레임워크이다.

1. Spring

  • 스프링 프레임워크의 핵심 모듈을 모아서 만든 프레임워크
  • 개발자가 직접 구성 (설정 파일, 빈 객체 등록, 의존성 설정)
    • IoC (Inversion of Control) 컨테이너를 제공하며, 객체의 라이프사이클 및 의존성 주입을 관리
  • 다양한 라이브러리를 가지고 있음. 추가적인 라이브러리와 설정 필요
  • 세밀하게 제어하고자 할 때
  • 모듈화: Spring은 여러 모듈로 구성되어 있으며, 필요한 모듈만 선택하여 사용할 수 있습니다. 이는 경량화된 애플리케이션을 개발할 수 있음을 의미합니다.
  • AOP (Aspect-Oriented Programming) 지원: Spring은 관점 지향 프로그래밍을 지원하며, 횡단 관심사를 분리할 수 있습니다.

주의 할 점

  • 설정 복잡성: Spring 프로젝트의 설정이 복잡할 수 있으며, XML 기반 또는 Java 기반 설정을 다루어야 할 수 있습니다.
  • 실행 시 성능 오버헤드: Spring의 컨테이너가 객체 관리를 수행하므로 일부 경우에는 실행 시 오버헤드가 발생할 수 있습니다.

2. Spring Boot

  • 스프링 프레임워크를 쉽게 사용할 수 있도록 만든 프레임 워크
  • 설정 파일, 프로젝트 설정, 라이브러리 의존성 자동으로 처리해주는 기능 제공
    • 빠른 개발: Spring Boot는 기본 설정을 제공하고, 복잡한 설정을 간소화하므로 빠른 개발이 가능합니다. (초기설정 시간 절약)
    • Spring Boot의 자동 구성 및 스타터(Starter) 패키지는 개발 프로세스를 가속화하며, 초기 설정을 최소화합니다.
  • 독립적으로 실행 가능한 JAR 파일로 프로젝트를 빌드 할 수 있다.
    - 클라우드 서비스 및 도커와 같은 가상화 환경에 빠르게 배포 가능
  • 내장 서버: Spring Boot는 Tomcat, Jetty 또는 Undertow와 같은 내장 서버를 제공하므로 별도의 서버 구성이 필요하지 않습니다.(자체 웹 서버 내장)
    - 빠르고 간편하게 배포 진행
  • 프로퍼티 파일을 사용하여 애플리케이션 구성을 관리합니다. 이로써 설정을 외부화하고 필요한 구성을 변경하기가 쉽습니다.

* 기존에는 배포 시 별도의 외장 웹 서버를 설치하고, 프로젝트를 War 파일로 빌드하여 배포를 진행한다. 이러한 방식은 처리 속도가 느리고 번거롭다는 단점을 가집니다.

1) 라이브러리 버전 자동화

: Spring Boot는 종속성 관리를 자동화하고 필요한 라이브러리의 버전을 관리합니다. 이는 프로젝트에서 다양한 라이브러리를 사용할 때 버전 충돌 문제를 최소화하고, 개발자가 라이브러리 버전을 수동으로 관리할 필요가 없게 만듭니다.

  • 종속성 관리를 자동화, 라이브러리 버전 관리 -> 버전 충돌 문제 해결
  • Maven 또는 Gradle과 같은

2) Auto Configuration

: Spring Boot는 자동 설정 (Auto Configuration)을 통해 프로젝트의 설정을 간소화합니다. 개발자가 설정 파일을 별도로 작성하지 않아도, Spring Boot는 프로젝트의 요구 사항에 따라 필요한 설정을 자동으로 수행합니다. 이는 개발자가 빠르게 프로젝트를 시작하고, 환경을 설정하는 데 드는 시간을 단축시킵니다.

3) application.properties / application.yml

: Spring Boot는 설정 정보를 application.properties 또는 application.yml 파일에 기반으로 관리합니다. 이러한 설정 파일을 사용하면 프로퍼티 설정을 직관적으로 관리할 수 있으며, 환경별로 다른 설정을 지정할 수 있습니다.

4) 간소화된 설정

: Spring Boot의 간소화된 설정 및 자동 설정은 로직을 구현하는 데 더 집중할 수 있게 만듭니다. 개발자는 핵심 비즈니스 로직에 더 많은 시간과 에너지를 투자할 수 있으며, 프로젝트 초기 설정 및 환경 구축에 소요되는 시간을 줄일 수 있습니다.

4) 객체지향 코딩

: Spring Boot를 사용하면 Java의 객체지향 프로그래밍의 장점을 실감할 수 있습니다. Spring Boot를 통해 개발한 코드는 객체지향 프로그래밍 원칙을 준수하며, 객체 지향 프로그래밍의 특징을 두드러지게 느낄 수 있습니다. 이는 코드의 가독성을 향상시키고 유지 보수를 더 효율적으로 만듭니다.

📍 프레임워크 & 라이브러리

  • 라이브러리(library)
    • 개발 주도권 : 개발자
    • 필요한 기능만 사용 가능
  • 프레임워크(framework)
    • 개발 주도권 : 프레임워크
    • 웹 개발 시작 방법부터 설정, 기능 구현 모든것을 프레임워크에서 정해 놓은 대로 따라야한다.
libraryframework
Java ScriptjQuery, D3.js, Bootstrap, ReactReact, Angular, Vue.js
JavaSpring, Django, AppMaster,
QRMmyBatis

0개의 댓글