스프링(Spring), 스프링부트(SpringBoot)/스프링(Spring) 기초

스프링 인 액션 제5판(크레이그 월즈 지음) - 스프링 살펴보기

개발학생 2026. 6. 19. 19:03
반응형

*책 내용과 살짝 다르게, 다음과 같은 환경에서 프로젝트를 생성

2026.05.25 - [스프링(Spring), 스프링부트(SpringBoot)/스프링(Spring) 기초] - 스프링 인 액션 제5판(크레이그 월즈 지음) - 스프링 시작하기 1

 

스프링 인 액션 제5판(크레이그 월즈 지음) - 스프링 시작하기 1

0. 스프링과 스프링 부트의 차이1) 스프링(Spring Framework)의존성 주입(DI), AOP, 트랜잭션 관리 등 엔터프라이즈 애플리케이션의 기반을 제공XML, Java Config, Annotation 등을 이용해 원하는 설정을 직접 해

keep-programming-study.tistory.com

 

 

*스프링에는 100개 이상의 많은 의존성이 있으므로, 중요한 것들만 언급 

 

1. 핵심 스프링 프레임워크

  • 스프링에 있는 모듯 것의 기반이 됨
  • 핵심 컨테이너와 의존성 주입 프레임워크 외에도 몇 가지 다른 기능을 제공
    1. 스프링 MVC는 HTML외에도, 출력을 생성하는 REST API를 만들 때도 사용 가능 
    2. 템플릿 기반의 JDBC(JdbcTemplate) 지원을 포함하여, 기본적인 데이터 퍼시스턴스 지원 제공 
    3. 리액티브 프로그래밍 지원 (스프링 WebFlux라는 이름의 리액티브 웹 프레임워크 포함)

2. 스프링 부트 (스프링의 필수 요소)

  • 스프링 스타터 의존성과 자동 구성을 포함
  • 액추에이터(Actuator): 애플리케이션의 내부 작동을 런타임 시 살펴볼 수 있는 기능 제공
    -> 메트릭(metric, 애플리케이션 운영 상태를 수치로 표현한 지표),
        스레드 덤프(Thread Dump, JVM 내부에서 실행 중인 모든 스레드의 상태 & 스택 트레이스를 특정 시점에 그대로 찍어낸 스냅샷(Snapshot)), 애플리케이션 상태, 애플리케이션 환경 속성 포함
  • 환경 속성의 명세
    -> 애플리케이션 실행 시점에 주입되는 설정 값,
        다시 말해서 스프링부트가 제공하는 표준 속성 키(server.port, spring.datasource.url 등)와 그 의미를 문서화
  • 핵심 프레임워크에 추가되는 테스트 지원
    1. spring-boot-starter-test → JUnit, Mockito, AssertJ, Spring TestContext Framework 등을 자동으로 포함
    2. @SpringBootTest → 애플리케이션 컨텍스트 전체를 띄워서 통합 테스트 가능
    3. @WebMvcTest → MVC 레이어만 슬라이스 테스트(Slice Test, 스프링부트가 제공하는 특정 레이어만 로드해서 검증)
    4. TestRestTemplate, MockMvc → REST API 호출 및 응답 검증 지원
  • 스프링부트 CLI(command-line interface, 명령형 인터페이스) 제공
    : 애플리케이션 전체를 그루비 스크립트들로 작성하여 명령행에서 실행 가능

=> 이 책에서는 스프링 부트 중심의 관점으로 스프링이라는 용어를 사용

3. 스프링 데이터 (Spring Data)

  • 간단한 자바 인터페이스로
    애플리케이션의 데이터 리포지토리(Repository, 데이터를 꺼내고 저장하는 창구 역할: DB에서 SQL문을 쓰지 않고 엔티티를 저장하거나 불러올 수 있음)를 정의할 수 있음
    -> 작명 규칙을 사용하여, 데이터를 저장하고 읽는 메서드를 정의
  • 다른 종류의 데이터베이스와 함께 사용 가능:
    관계형 데이터베이스 JPA, 문서형 데이터베이스 Mongo, 그래프형 데이터베이스 Neo4j 

4. 스프링 시큐리티 (Spring Security)

  • 스프링의 강력한 애플리케이션 보안 프레임워크
  • 인증(authentication), 허가(authorization), API(Application Programming Interface) 보안을 포함하는 폭넓은 범위의 보안 요구를 다룸
  • 종류가 매우 많으므로, 자세한 내용은 공식 문서에서 확인 필요

5. 스프링 통합과 스프링 배치 (Spring Integration, Spring Batch)

  • 대부분의 애플리케이션은 다른 애플리케이션이나 같은 애플리케이션 내의 컴포넌트들을 통합할 필요가 생김
    -> 스프링 통합과 스프링 배치가, 스프링 기반 애플리케이션의 통합 패턴 구현을 제공
  • 스프링 통합: 데이터가 사용 가능한 즉시 처리되는 실시간 통합
  • 스프링 배치: 다량의 데이터가 처리되는 시점을 트리거(주로 시간을 기준으로 함)가 알려줄 때 데이터가 수집 처리되도록 통합 처리 (= 배치 통합)

6. 스프링 클라우드 (Spring Cloud) 

  • 마이크로서비스 아키텍처(여러 개의 작은 애플리케이션을 조합해서 하나의 큰 서비스를 만드는 방식)를 만드는 과정에서, 
    이를 쉽게 구현하기 위한 프로젝트들의 모음인 스프링 클라우드를 사용
  • 서비스 통신, 설정 관리, 서비스 등록/발견, 분산 추적, 장애 복구 같은 기능을 추가하기 위한 도구 모음을 제공하는 것
  • 스프링 시큐리티와 마찬가지로 종류가 매우 많으므로, 공식 문서를 확인하거나 '스프링 마이크로서비스 코딩 공작소(2018)'라는 책을 참고해야 함 
반응형