컨테이너
- 프레임워크 안에서 인스턴스들의 생명 주기를 관리하며, 생성된 인스턴스들에게 추가적인 기능을 부여
- 작성한 코드의 처리 과정을 컨테이너에서 수행
- 스프링 컨테이너는 스프링 프레임워크 핵심에 위치하며, DI를 통해 애플리케이션을 구성하는 컴포넌트를 관리
IOC 컨테이너
- Inversion Of Control : 제어의 역전
- 인스턴스의 생성 및 소멸을 개발자 대신 컨테이너가 해줌
- 필요한 이유
- 컴포넌트 / 오브젝트가 자유로운 삽입이 가능하도록 하기 위해
- 서비스의 configuration이 일관성을 갖도록 하기 위해
- 단일화된 서비스의 접근 방법 제공
- 비지니스 오브젝트에 부가적인 enterprise service 제공
DI
- Dependency Injection : 의존성 주입
- 의존성이 있는 컴포넌트를 개발자가 코드로 명시하는 것이 아니라 Spring이 런타임에서 연결해 처리
- 의존적인 객체를 직접 생성하거나 제어하는 것이 아니라 특정 객체에 필요한 객체를 외부에서 결정해 연결
Spring MVC 흐름
- 요청된 url을 dispatcher-servlet으로 전달
- 핸들러 매핑은 해당 url에 매핑된 컨트롤러가 있는지 검사 후 컨트롤러에 전달
- 해당 컨트롤러가 로직 처리
- Model , View 객체 생성 후 로직의 결과를 담아 dispatcher-servlet에 전달
- dispatcher-servelt은 전달 받은 뷰가 있는지 검사하기 위해 ViewResolver로 보냄
- ViewResolver는 받은 뷰가 있는지 검사 후 뷰로 보냄
- 모델과 같이 뷰를 그린 후에 dispatcher-servlet으로 보냄
- 최종 컨텐츠를 클라이언트에게 전달
Bean 객체
- 자바에서 POJO(Plain Old Java Object) 로 xml 설정 파일을 통한 생명주기, 종속성 등의 메타데이터를 가지고 스프링 컨테이너에서 생성된 객체
- 컨테이너가 생성되었다는 점을 제외하면 일반 자바 객체와 같음
VO
- Value Object : 값을 갖고 있는 객체
- 비지니스 값을 가져올때 사용
- 보통 값을 수정할 수 없는 것으로 함
- 즉, Getter만 존재하고 Setter는 없는 것이 일반적임
DTO
- Data Transfer Object : VO와 같이 값을 갖고 있는 객체
- VO와의 차이점은 하나의 인스턴스로, 데이터 핸들링에 사용되는 객체
- DTO를 통해 데이터를 전달할 수 있음
DAO
- Data Access Object : 실제 DB에 접속하는 객체
- Service와 DB 사이에서 가져온 데이터를 엔터티로 변환시켜 가져옴
'인실리코젠' 카테고리의 다른 글
[인실리코젠] Web Crawling - Finish (1) | 2024.02.02 |
---|---|
[인실리코젠] WebCrawling - 2 (0) | 2024.01.22 |
[인실리코젠] Spring Boot + MVC 이론 정리 (0) | 2024.01.17 |
[인실리코젠] WebCrawling - 1 (0) | 2024.01.16 |
[인실리코젠] Maven에 대하여 (0) | 2024.01.12 |