GW LABS

스프링 부트 핵심가이드 (1) - 스프링 부트란? 본문

Book-Review/Programing

스프링 부트 핵심가이드 (1) - 스프링 부트란?

GeonWoo Kim 2022. 8. 11. 14:04

1.1 스프링 프레임워크

  • 오픈소스 경량급 애플리케이션 프레임워크
  • 핵심가치: “애플리케이션 개발에 필요한 기반을 제공해서 개발자가 비즈니스 로직 구현에만 집중할 수 있게끔 하는 것”

1.1.1 제어 역전(IoC)

  • 사용할 객체를 직접 제어하지 않고 객체의 생명주기를 외부(스프링 컨테이너)에 위임
  • 클린코드 11장 시스템에서는 이를 시스템 제작(객체 생성과 의존성 연결)과 시스템 사용(런타임 로직)을 분리하라는 원칙으로 설명하고 있다.
    • 이렇게해서 얻는 이점은 개발자가 관심사를 분리시킬 수 있으므로 비즈니스 로직에 더 집중할 수 있다는 점이다.

1.1.2 의존성 주입(DI)

  • 사용할 객체를 직접 생성하지 않고 외부 컨테이너가 생성한 객체를 주입받아 사용하는 방식
    • 생성자를 통한 의존성 주입
    • 필드 객체 선언을 통한 의존성 주입
    • setter 메서드를 통한 의존성 주입
  • 스프링 공식 문서에서 권장하는 방식은 생성자를 통한 방식

1.1.3 관점 지향 프로그래밍(AOP)

  • 핵심 기능과 부가 기능을 구분하여 각각을 하나의 관점으로 보는 개발 방식
  • AOP 구현방법
    • 컴파일 과정에 삽입하는 방식
    • 바이트코드를 메모리에 로드하는 과정에 삽입하는 방식
    • 프락시 패턴을 이용한 방식
  • 스프링은 프락시 패턴을 통해 AOP 기능을 제공하고 있다.

1.2.1 의존성 관리

  • spring-boot-starter라는 의존성을 제공하여 스프링 프레임워크와 다른 라이브러리 버전의 호환성을 맞춰준다.
  • 주요 spring-boot-starter 라이브러리
    • spring-boot-starter-web: MVC, RESTful 애플리케이션을 위한 의존성. 내장 톰캣이 포함되어 jar로 실행가능
    • spring-boot-starter-test: JUnit, Jupiter, Mockito 등의 테스트용 라이브러리 포함.
    • spring-boot-starter-jdbc: HikariCP를 활용한 JDBC 기능 제공
    • spring-boot-starter-security: 스프링 시큐리티 기능 제공
    • spring-boot-starter-data-jpa: 하이버네이트를 활용한 JPA기능 제공
    • spring-boot-starter-cache: 스프링 프레임워크의 캐시 기능을 지원

1.2.2 자동 설정

  • 애플리케이션에 추가된 라이브러릴 실행하는 데 필요한 환경설정을 자동으로 탐색
Comments