Daily Dev Q&A: Spring Boot

2025. 12. 26. 16:20·Archive/Daily Dev Q&A

Topic (오늘의 주제)

Spring Boot

: Spring Framework를 기반으로 하는 "설정이 필요 없는(Zero-configuration)" 신속한 애플리케이션 개발 도구.

Why (왜 사용하는가? 왜 중요한가?)

  • 실무: 복잡한 XML 설정이나 WAS(Tomcat 등) 설치 과정을 생략하고, 비즈니스 로직만 짜면 바로 실행 가능한 웹 서버를 띄울 수 있어 생산성이 압도적이다.
  • 구조적 의미: "Convention over Configuration (설정보다 관례)" 원칙을 따라, 개발자가 일일이 설정하지 않아도 자주 쓰이는 설정을 자동으로 적용해준다.
  • 면접 의도: "Spring과 Spring Boot의 차이점이 무엇인가요?"라는 질문은 신입/경력 불문 필수 질문이다. 자동 설정의 편리함과 내장 서버의 존재를 아는지 확인한다.

Core Concept (핵심 개념 정리)

스프링 부트가 개발자를 편하게 해주는 **3가지 마법(핵심 기능)**이 있습니다.

  1. Auto Configuration (자동 설정)
    • 설명: 공통적으로 필요한 빈(Bean)들을 스프링 부트가 클래스패스에 있는 라이브러리를 바탕으로 자동으로 설정해줍니다.
    • 핵심: 과거 XML이나 자바 설정 파일에 일일이 등록해야 했던 DB 연결, 서블릿 설정 등을 @EnableAutoConfiguration이 대신 처리합니다.
  2. Starter (스타터 의존성 관리)
    • 설명: 특정 목적(웹 개발, DB 연동 등)에 필요한 **라이브러리 묶음(Bundle)**을 제공합니다.
    • 핵심: 예전에는 spring-web, jackson, hibernate 등 수많은 의존성과 버전을 일일이 맞췄어야 했지만, 이제는 spring-boot-starter-web 하나만 추가하면 호환되는 버전들이 통째로 관리됩니다.
  3. Embedded WAS (내장 웹 서버)
    • 설명: 내부에 Tomcat, Jetty 같은 웹 서버가 포함되어 있어 별도의 WAS 설치 없이 .jar 파일만으로 애플리케이션을 실행할 수 있습니다.
    • 핵심: '환경'과 '코드'를 하나로 묶어 배포가 매우 간편해졌으며, 마이크로서비스 아키텍처(MSA) 환경에 최적화되어 있습니다.

💡 비교: Spring (Legacy) vs Spring Boot

구분 Spring Framework Spring Boot
설정(Config) XML 혹은 Java 설정 파일에 수동 등록 Auto Configuration (자동화)
서버(WAS) 외부에 Tomcat 설치 및 배포(war) 필요 내장 서버 포함 (jar 실행 가능)
의존성 관리 각 라이브러리 버전 궁합을 직접 확인 Starter를 통한 버전 자동 관리
생산성 초기 환경 구축에 시간이 많이 소요 프로젝트 생성 즉시 비즈니스 로직 개발 가능

Interview Answer Version (면접 답변식 요약)

"Spring Boot는 스프링 프레임워크를 더 쉽고 빠르게 사용할 수 있게 해주는 도구입니다.

가장 큰 특징은 복잡한 설정을 자동으로 처리해 주는 Auto Configuration, 의존성을 쉽게 관리하는 Starter, 그리고 별도의 WAS 설치 없이 실행 가능한 **내장 웹 서버(Embedded Tomcat)**를 제공한다는 점입니다. 덕분에 개발자는 환경 설정보다는 비즈니스 로직 개발에 집중할 수 있습니다."

Practical Tip (사용시 주의할 점 or 활용 예)

1. @SpringBootApplication의 비밀

메인 클래스에 붙는 이 어노테이션은 사실 3가지 어노테이션의 합체입니다.

  • @SpringBootConfiguration: 스프링 설정 파일임.
  • @ComponentScan: 현재 패키지 하위의 빈(Component)들을 싹 긁어 모음. (그래서 메인 클래스의 위치가 중요함! 보통 최상위 패키지에 둠)
  • @EnableAutoConfiguration: 이게 바로 마법의 핵심. 자동 설정을 활성화함.

2. application.properties vs application.yml

  • 실무에서는 계층 구조 표현이 가능하고 가독성이 좋은 YAML(.yml) 형식을 더 선호합니다.
  • 주의: yml은 들여쓰기(Space 2칸)에 매우 민감하므로 작성 시 주의해야 합니다.

3. 프로파일(Profile) 관리

  • application-dev.yml (개발용), application-prod.yml (운영용) 등으로 파일을 나누고, 실행 시점에 --spring.profiles.active=prod 옵션만 주면 환경별 설정을 쉽게 갈아끼울 수 있습니다.

예상 꼬리 질문 정리

  1. "Spring Boot의 Auto Configuration(자동 설정)은 어떤 원리로 동작하나요?"
    • (Classpath에 있는 라이브러리를 감지하여 조건부로 빈을 등록하는 @ConditionalOnClass 등의 원리 설명 필요)
  2. "내장 톰캣(Embedded Tomcat)이 뭔가요? 실무에서 성능 문제는 없나요?"
    • (자바 애플리케이션 안에 웹 서버가 라이브러리처럼 포함된 형태. 튜닝을 통해 대규모 트래픽도 충분히 처리 가능함)
  3. "Spring Boot Starter에 없는 라이브러리는 어떻게 관리하나요?"
    • (일반 Maven/Gradle 의존성처럼 추가하면 됨. 단, 버전 호환성은 직접 체크해야 함)

'Archive > Daily Dev Q&A' 카테고리의 다른 글

Daily Dev Q&A: Spring Stereotype Annotations  (0) 2025.12.29
Daily Dev Q&A: Spring Bean  (0) 2025.12.26
Daily Dev Q&A: IoC & DI  (0) 2025.12.26
Daily Dev Q&A: Spring Framework  (0) 2025.12.23
Daily Dev Q&A: 트랜잭션 (Transaction)  (0) 2025.12.22
'Archive/Daily Dev Q&A' 카테고리의 다른 글
  • Daily Dev Q&A: Spring Stereotype Annotations
  • Daily Dev Q&A: Spring Bean
  • Daily Dev Q&A: IoC & DI
  • Daily Dev Q&A: Spring Framework
tlsgkstj
tlsgkstj
짱구의 성장 일기
  • tlsgkstj
    코딩하는 짱구
    tlsgkstj
  • 전체
    오늘
    어제
    • 분류 전체보기 (159)
      • About (1)
      • Projects (35)
        • Personal Projects (21)
        • Team Projects (14)
      • Engineering (20)
        • CS & Tools (0)
        • Backend Core (15)
        • Frontend (1)
        • Infra & Cloud (2)
        • AI & Tools (1)
      • Trouble Shooting & Issues (0)
      • Growth & Career (38)
        • Interview Prep (0)
        • Retrospectives (38)
      • Archive (65)
        • TIL (8)
        • Daily Dev Q&A (56)
  • 블로그 메뉴

    • 홈
    • About
    • Projects
    • Tech Stack
    • Dev Log
    • GitHub
  • 링크

    • github
  • 공지사항

  • 인기 글

  • 태그

    경기기후바이브코딩
    데브페스트
    Project_Review
    Spring비교
    network
    java
    SpringBoot
    OrphanRemova
    REACT
    DevFestIncheon2025
    jpa
    프로젝트회고
    클로드코드
    aws_s3
    backend
    프로덕트개발자
    devlog
    spring
    커리어리셋
    til
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
tlsgkstj
Daily Dev Q&A: Spring Boot
상단으로

티스토리툴바