정적인 컨텐츠 제공 (HTML, CSS, JS, Image 등)
ex) Apache HTTP Server 등
특징
동적인 컨텐츠 처리 (Java 코드 실행, DB 연동 등)
ex) Apache Tomcat, Jetty 등
특징
Tomcat은 WAS
따라서 Spring Boot는 내장 Tomcat을 사용해 Application과 WAS를 함께 실행
즉, Spring Boot는 WAS 역할까지 내포한 단독 실행 가능한 애플리케이션을 생성
별도 Web Server 없이도 동작함
ㄴ 자동 어노테이션 @Component, Service, Repository, Controller
@ComponentScan이 지정된 패키지 이하 클래스들을 자동 탐색해 Bean으로 등록
장점 - 코드가 간결, 명시적일 필요 없음, 유지보수가 용이, 일관된 프로젝트 구조에서 유리
단점 - 자동 등록 범위가 제한적, 명시성이 부족해 설정 흐름 파악이 어려움
장점 - 명확하게 등록 대상과 객체 생성 방법을 지정 가능, 외부 라이브러리나 조건부 Bean 등록에 유용
단점 - 코드가 많아지며 실수로 중복 등록 혹은 누락될 가능성이 있음
장점 - 설정과 구현을 완전 분리 가능, 레거시 프로젝트와 호환성 있음
단점 - 가독성, 유지보수 불편하며 Spring Boot 이후론 지양하는 방향으로 가고 있음
ㄴ 예시 어노테이션 @ConditionalOnMissingBean, @Profile, @Primary, @Qualifier
특정 환경, 조건에 따라서 Bean을 등록하거나 선택함
장점 - 유연한 설정이 가능, 테스트나 멀티 환경 설정에서 유리
단점 - 설정이 복잡해지고 추적이 어려워짐, 디버깅에 시간 소요