꿈소년의 개발 이야기

[스프링 부트 개발자 온보딩 가이드 스터디] Chapter 02 스프링 부트란 무엇인가요? 본문

Do it 스터디!/스프링 부트 개발자 온보딩 가이드 스터디!

[스프링 부트 개발자 온보딩 가이드 스터디] Chapter 02 스프링 부트란 무엇인가요?

fogthegreat 2026. 4. 2. 21:43
반응형

DAY 2

🔖 오늘 읽은 범위 :

🌱공부 내용: Chapter 02 스프링 부트란 무엇인가요?
👢쪽수: p.46- p.57


스프링 부트 구조

  • 내장 웹서버
  • 스프링 부트 스타터
  • 자동 구성 Auto Configuration
  • 스프링 부트 액츄에이터 Actuator

내장 웹서버

서블릿 엔진 포함. 자바 서블릿 실행. HTTP 요청 처리.

Tomcat 이 기본 설정. Jetty, Undertow 선택적 사용 가능.

스프링 부트 스타터

특정 기능 구현에 필요한 여러 라이브러리를 미리 구성된 패키지로 제공하는 도구.

Maven pom.xml 이나 Gradle build.gradle 파일에 추가하면, 모든 의존성을 자동으로 다운로드하여 프로젝트에 통합 함.

spring-boot-starter-web 스타터: Spring 웹 애플리케이션 구축에 필요한 라이브러리들 포함.

필요한 기능만 선택적으로 포함할 수 있음.

spring-boot-starter-data-jpa 스타터: JPA를 이용한 데이터베이스 연동 기능 추가.

필요한 기능만 추가해서 복잡성 최소화 가능.

자주 사용되는 것들

  • spring-boot-starter-security
  • spring-boot-starter-test

자동 구성 Auto Configuration

스프링 부트 애플리케이션이 실행 될 때, 명시적인 설정이 없어도 애플리케이션에 필요한 빈 Bean 과 설정을 자동으로 구성해주는 기능.

자동 구성 대표 사례

  1. 데이터소스 설정
  2. JPA 설정

데이터소스

애플리케이션 → 데이터베이스 연결 관리하는 중요 요소.

애플리케이션 설정 파일에 데이터베이스 연결 정보가 포함된 경우, 데이터소스 빈 자동 생성 및 연결 관리.

JPA 설정

JPA 구성 자동 처리

  • 애플리케이션 빌드 파일 Maven pom.xml 또는 Gradle build.gradle 에 JPA 관련 라이브러리가 포함되고,
  • 설정 파일 application.properties 또는 application.yml 에 데이터베이스 설정이 있을 경우.

EntityManagerFactory, TransactionManager 같은 빈을 생성하며, JPA 엔티티 클래스와 데이터베이스 테이블 간의 매핑을 자동 수행.

요구 사항에 따라 JPA 설정 직접 정의 또는 기본 설정 오버라이드.

스프링 부트 액츄에이터 Actuator

애플리케이션 상태를 모니터링, 관리 하기 위한 다양한 엔드포인트를 제공하는 기능.

메트릭, 상태 확인, 환경 정보, 로그 등을 조회. 운영 환경에서 애플리케이션을 더욱 효율적으로 관리.

의존성 추가만으로 간단히 프로젝트에 포함 가능.

필요에 따라 엔드포인트 활성/비활성화, 보안 설정, 노출 범위 조정 등 세밀 제어 가능.

주요 개념

스프링의 핵심 개념

  • IoC: 제어의 역전
  • 스프링 빈: Spring bean
  • DI: 의존성 주입
  • AOP: 관점 지향 프로그래밍

IoC

제어 역전. 객체의 생성 및 생명 주기 관리를 개발자가 아닌 프레임워크에서 담당하는 개념.

Inversion of Control

스프링 IoC 컨테이너가 애플리케이션의 모든 빈을 생성하고 관리.

애플리케이션 구성 요소 간의 의존성을 외부에서 주입 받음 ⇒ 객체 간 결합도 낮추고, 코드 유연성과 테스트 용이성을 높임.

@Autowired 를 사용해 의존성을 주입하는 예.

객체의 생서과 의존성 주입을 스프링 컨테이너가 대신 처리해 줌. 직접 객체 간의 의존 관계를 직접 관리할 필요가 없음.

스프링 빈

스프링 IoC 컨테이너가 관리하는 객체.

스프링 부트 애플리케이션에서 사용하는 대부분의 객체들이 빈으로 등록 됨. 스프링 컨테이너에 의해 자동으로 생성되고 관리 됨.

@Component 를 사용해 클래스를 스프링 빈으로 등록할 수 있음.

EJB(Enterprise JavaBean) 이라는 비슷한 개념이 있음.

더 가볍고 유연하고 설정이 간단한 게 빈.

EJB 는 Java EE 컨테이너(애플리케이션 서버)에 의해 관리 됨.

스프링 빈은 스프링 IoC 컨테이너가 관리. 스프링 애플리케이션에서 사용하는 다양한 객체를 빈으로 관리하여 유연성과 경량성을 제공.

컨트롤러, 서비스, 리포지토리 등이 스프링 빈에 해당함. 보통 빈으로 부름.

스프링 부트 애플리케이션 == 스프링 빈으로 구성된 애플리케이션.

DI

DI(Dependency Injection) 은 IoC 구현 방식 중 한 가지.

객체가 필요로 하는 의존성을 개발자 대신 스프링 컨테이너가 대신 주입해 주는 방식.

스프링에서 적절한 빈을 자동으로 주입해 줌.

스프링 프레임워크는 @Autowired 애너테이션을 통해서 주입 받기를 요구하는 것을 파악하고, 런타임에 IoC 컨테이너에 보관하고 있던 해당 빈을 주입함.

AOP

AOP(Aspect Oriented Programming)

공통 관심사를 모듈화하여 비즈니스 로직과 분리하는 프로그래밍 방식.

로깅, 보안, 트랜잭션 관리 같은 기능을 각 모듈에 흩어져서 구현함.

공통 관심사를 한 곳에 모아 관리하여 코드 중복을 줄이고, 코드 재사용성을 높임.

@Aspect, @Before 애너테이션을 사용해 AOP 를 적용함.

로그 로직을 로깅 대상 안에 직접 구현하지 않음.

비즈니스 로직과 로그 기능이 깔끔하게 분리 됨.

반응형