framework 안에서 intance 들의 생명 주기를 관리하며, 생성된 인스턴스들에게 추가적인 기능을 부여한다.
자신이 작성한 코드의 처리과정을 container 에서 수행한다.
spring container 는 spring framework 핵심에 위치하며, DI 를 통하여 애플리케이션을 구성하는 comfonent(요소)들을 관리한다.
Lifecycle Mangement, configuration, Dependency Resolution, Object pooling 등을 관리한다.
Inversion of Control, 제어의 역전 이라는 뜻으로,
인스턴스의 생성 및 소멸을 개발자 대신 컨테이너가 처리한다. 그 외 제어권을 프레임 워크에서 가져 간다는 말로도 사용한다.
필요한 이유는 아래와 같다.
1. 컴포넌트 / 오브젝트가 자유로운 삽입이 가능하도록 하기 위해서
2. 서비스의 configration 이 일관성을 갖도록 하기 위해서
3. 단일화 된 서비스의 접근방법을 제공한다.
`1`4. 비즈니스 오브젝트에 부가적인 enterprise service 를 제공한다.
1. 요청된 URL 을 dispatcher-servlet으로 전달한다.
2. 핸들러 매핑은 해당 URL에 매핑된 컨트롤러가 있는지 검사 후에 컨트롤러에게 전달한다.
3. 해당 컨트롤러가 로직을 처리한다.
4. ModelAndView 객체 생성 후, 로직의 결과를 담아서 dispatcher-servlet 에 전달한다.
5. dispatcher-servelt은 전달 받은 뷰가 있는지 검사하기 위해서 ViewResolver 로 보낸다.
6. ViewResolver 는 받은 뷰가 있는지 검사 후 View 로 보낸다.
7. 모델과 같이 뷰를 그린 후에 dispatch-servlet으로 보낸다.
자바에서 POJO(Plain Old Java Object)로, XML 설정 파일을 통한 생명주기, 종속상 드의 메타데이터를 가지고 스프링 컨테이너에서 생성된 객체이다.
컨테이너에서 생성되었다는 점을 제외하면 일반 자바 객체와 같다.
Value Object 의 줄임말로, 값을 갖고 있는 객체이다.
비즈니스 값을 가져올 때 사용되며, 보통 값을 수정할 수 없는 것으로 한다.
즉, getter만 존재하고 setter이 없는 것이 일반적이다.
Data Transfer Object 의 줄임말로 VO(Value Object)와 같이 값을 갖고 있는 객체이다.
VO 와의 차이점은 하나의 인스턴스로, 데이터 핸들링에 사용되는 객체이다.
DTO 를 통해 데이터를 전달 할 수 있다.
Data Access Object 의 줄임말로, 실제 DB에 접속하는 객체이다.
Service 와 DB 사이에서 가져온 데이터를 Entity로 변환시켜 가져온다.
출처 : https://velog.io/@dnjscksdn98/Spring-Framework-%EA%B0%9C%EB%85%90-%EC%A0%95%EB%A6%AC