개인 공부 (23.07~

스프링 컨테이너의 관리 대상은?

Song쏭 2023. 10. 30. 17:21

1. 컴포넌트(Component) : 일반적인 스프링 빈

2. 서비스(Service) : 비즈니스 로직을 포함하는 서비스 계층의 클래스

3. 레파지토리(Repository) : 데이터베이스와의 연동을 담당하는 계층의 클래스

4. 컨트롤러(Controller) : 웹 요청을 처리하는 계층의 클래스

5. 구성(Configuration) : 빈 설정 및 다른 구성을 위한 클래스

 

반면, Entity와 DTO는 스프링 컨테이너에 의해 관리되지 않는 것이 일반적이다.

 

Entity: 엔터티는 데이터베이스의 테이블과 일대일로 매핑되는 객체로, 주로 데이터베이스와의 상호 작용을 위한 정보(예: 데이터)를 표현한다. 각 트랜잭션 또는 요청마다 동적으로 생성되고 변경되므로 스프링 빈으로 관리되지 않는다.

DTO(Data Transfer Object): DTO는 서로 다른 계층 간의 데이터 전송을 위한 객체이다. DTO는 상황에 따라 동적으로 생성되며, 요청 또는 응답마다 다른 데이터를 가질 수 있다. 따라서 스프링 컨테이너에 의해 싱글톤 빈으로 관리되기보다는 필요할 때마다 새로운 인스턴스로 생성되는 것이 더 적절하다.

따라서, Entity나 DTO는 각 요청이나 트랜잭션의 컨텍스트에서 동적으로 생성되고 소멸하는 생명주기를 가지며, 

이러한 특성상 스프링 컨테이너에 의해 관리되지 않는 것이 일반적이다.