Topic (오늘의 주제)
Spring Boot
: Spring Framework를 기반으로 하는 "설정이 필요 없는(Zero-configuration)" 신속한 애플리케이션 개발 도구.
Why (왜 사용하는가? 왜 중요한가?)
- 실무: 복잡한 XML 설정이나 WAS(Tomcat 등) 설치 과정을 생략하고, 비즈니스 로직만 짜면 바로 실행 가능한 웹 서버를 띄울 수 있어 생산성이 압도적이다.
- 구조적 의미: "Convention over Configuration (설정보다 관례)" 원칙을 따라, 개발자가 일일이 설정하지 않아도 자주 쓰이는 설정을 자동으로 적용해준다.
- 면접 의도: "Spring과 Spring Boot의 차이점이 무엇인가요?"라는 질문은 신입/경력 불문 필수 질문이다. 자동 설정의 편리함과 내장 서버의 존재를 아는지 확인한다.
Core Concept (핵심 개념 정리)
스프링 부트가 개발자를 편하게 해주는 **3가지 마법(핵심 기능)**이 있습니다.
- Auto Configuration (자동 설정)
- 설명: 공통적으로 필요한 빈(Bean)들을 스프링 부트가 클래스패스에 있는 라이브러리를 바탕으로 자동으로 설정해줍니다.
- 핵심: 과거 XML이나 자바 설정 파일에 일일이 등록해야 했던 DB 연결, 서블릿 설정 등을 @EnableAutoConfiguration이 대신 처리합니다.
- Starter (스타터 의존성 관리)
- 설명: 특정 목적(웹 개발, DB 연동 등)에 필요한 **라이브러리 묶음(Bundle)**을 제공합니다.
- 핵심: 예전에는 spring-web, jackson, hibernate 등 수많은 의존성과 버전을 일일이 맞췄어야 했지만, 이제는 spring-boot-starter-web 하나만 추가하면 호환되는 버전들이 통째로 관리됩니다.
- 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 옵션만 주면 환경별 설정을 쉽게 갈아끼울 수 있습니다.
예상 꼬리 질문 정리
- "Spring Boot의 Auto Configuration(자동 설정)은 어떤 원리로 동작하나요?"
- (Classpath에 있는 라이브러리를 감지하여 조건부로 빈을 등록하는 @ConditionalOnClass 등의 원리 설명 필요)
- "내장 톰캣(Embedded Tomcat)이 뭔가요? 실무에서 성능 문제는 없나요?"
- (자바 애플리케이션 안에 웹 서버가 라이브러리처럼 포함된 형태. 튜닝을 통해 대규모 트래픽도 충분히 처리 가능함)
- "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 |