🆀 웹 서버(Web Server)와 WAS(Web Application Server)의 차이를 설명하고, Spring Boot의 내장 톰캣이 이 둘 중 어디에 해당하는지 설명해주세요.
웹 개발 환경에서 두 개념이 자주 혼동되기 때문에 정확하게 알아두는 것이 좋다고 강사님이 여러 번 강조하셨었다..!
웹서버(Web Servier)
-정적인 콘텐츠(HTML, CSS, JS, 이미지 등)를 클라이언트(브라우저)에 제공하는 역할을 한다.
자바 코드나 동적인 로직을 처리할 수 없다는 한계가 있다.
WAS (Web Application Server)
-웹 애플리케이션의 비즈니스 로직을 처리하는 서버로 동적인 콘텐츠(JSP, 서블릿, 스프링 컨트롤러 등)을 생성하고 응답한다.
대부분의 자바 EE/서블릿 기반 기술을 지원한다.
Spring Boot의 내장 톰캣은 둘 중 어디에 해당할까?
-Spring Boot는 기본적으로 Tomcat을 내장하고 있으며, 이는 WAS역할을 한다.
➡️ 즉, Spring Boot애플리케이션 = 내장 WAS(Tomcat) + 비즈니스로직 이기때문에 따로 외부 WAS를 설치하지 않고도 웹 애플리케이션을 실행이 가능하다.
| 구분 | 웹 서버 | WAS |
| 처리 대상 | 정적 콘텐츠 | 동적 콘텐츠 |
| 역할 | HTML/CSS/JS 전달 | 서블릿, JSP, 스프링 로직 처리 |
| Spring Boot에서의 위치 | ❌ | 내장(Tomcat) |
🆀 Spring Boot에서 사용되는 다양한 Bean 등록 방법들에 대해 설명하고, 각각의 장단점을 비교해 보세요.
Spring Boot에서 Bean 등록 방식은 크게 세 가지로 나눌 수 있다. 각각의 방식은 빈을 어떻게 생성하고 관리할지 결정하는 방법이다.
1. @Component 계열 어노테이션 사용하기(자동 등록)
@Component
public class MyService { }
@Service // 비즈니스 로직에 특화
@Repository // DAO에 특화
@Controller // MVC 컨트롤러에 특화
*DAO(Data Access Object): 데이터베이스와 직접 소통하는 객체, DB에서 데이터를 조회, 저장, 수정, 삭제하는 로직을 담당
*MVC(Model-View-Contorller): 웹 애플리케이션을 구성하는 대표적인 설계 패턴 구조
👍 장점
-대상이 컴포넌트 스캔 대상(@ComponentScan)이 됨
-어노테이션만 붙이면 자동 등록!
-코드가 간결하고 직관적
-구조적으로 구분(Service, Repository)가능
👎단점
-라이브러리 클래스나 외부 클래스를 빈으로 등록하기 어려움
-세밀한 관리(이름지정, 조건등록 등)가 어려움
2. @Configuration + @Bean (수동 등록)
@Configuration
public class AppConfig {
@Bean
public MyService myService() {
return new MyService();
}
}
개발자가 직접 메서드를 통해 빈을 등록하고 복잡한 객체 생성 시 또는 외부 라이브러리 등록에 적합하다.
👍 장점
-의존성 주입을 명시적으로 제어할 수 있음
-외부 라이브러리 클래스도 빈으로 등록할 수 있음
👎단점
-코드가 다소 길어질 수 있음
-상대적으로 번거로움
3. @Import, @ComponentScan (특수 등록)
외부 설정 파일이나 특정 설정 클래스를 주입할 때 사용하며 간접적으로 Bean 등록을 도와준다.
@Configuration
@Import(DataSourceConfig.class) // ✅ 다른 설정 클래스 가져오기
public class AppConfig {
// AppConfig에도 DataSource가 등록됨
}
@ComponentScan(basePackages = {"com.example.service", "com.example.repository"})
@Import
: 다른 설정 클래스를 등록할 때! 설정 클래스를 여러 개로 나눴을 경우, 한 곳에서 한 번에 등록하고 싶을 때 사용한다.
@ComponentScan
: spring boot에서는 @SpringBootApplication이 본인의 패키지 하위만 스캔하므로, 다른 경로의 컴포넌트까지 스캔하려면 이렇게 직접 지정해야 한다. -> 스캔 대상 커스터마이징
👍 장점
-모듈화와 설정 분리에 유리함
-외부 설정을 손쉽게 통합할 수 있음
👎단점
-상대적으로 명시성이 떨어짐
-잘못 구성되면 디버깅이 어려움
끗
'📖위클리 페이퍼' 카테고리의 다른 글
| [👾코드잇] 위클리 페이퍼(4) (5) | 2025.07.09 |
|---|---|
| [👾코드잇] 위클리 페이퍼 (2) (0) | 2025.06.24 |
| [👾코드잇] 위클리 페이퍼 (1) (0) | 2025.06.23 |