- Spring IoC 컨테이너가 관리하는 자바 객체를 빈(Bean)이라고 부른다.
- 일반적으로 자바 프로그램에서는 1. 각 객체들이 프로그램의 흐름을 결정하고 각 객체를 직접 생성하고 조작하는 작업(객체를 직접 생성하여 메소드 호출)을 했다. 즉, 모든 작업을 사용자가 제어하는 구조였다.
ex) A 객체에서 B 객체에 있는 메소드를 사용하고 싶으면, B 객체를 직접 A 객체 내에서 생성하고 메소드를 호출했다.
- 하지만 IoC가 적용된 경우, 객체의 생성을 특별한 관리 위임 주체에게 맡긴다. 이 경우 사용자는 객체를 직접 생성하지 않고, 객체의 생명주기를 컨트롤러하는 주체는 다른 주체가 된다. 즉, 사용자의 제어권을 다른 주체에게 넘기는 것을 IoC(제어의 역전)라고 한다.
- 우리가 알던 기존의 자바 프로그래밍에서는 Class를 생성하고 new를 입력하여 원하는 객체를 직접 생성한 후에 사용했다. 하지만 Spring에서는 Spring에 의하여 생성되고 관리되는 자바 객체를 Bean이라고 한다.
- Spring에서 말하는 컨텍스트(context)는 스프링이 관리하는 빈들이 담겨 있는 컨테이너 라고 생각하면 된다.
- root-context는 ContextLoaderListener를 이용하여, servlet-context는 DispatcherServlet을 이용하여 생성한다.
1. root-context
- root-context에 등록되는 bean들은 모든 context에서 사용할 수 있다.(공유)
- service나 dao를 포함한, 웹 환경에 독립적인 bean들을 담아둔다.
- 서로 다른 servlet-context에서 공유해야 하는 bean들을 등록해놓고 사용할 수 있다.
- servlet-context 내 bean들은 이용이 불가능하다.
2. servlet-context
- servlet-context에 등록되는 bean들은 해당 context에서만 사용할 수 있다.
- DispatcherServlet이 직접 사용하는 컨트롤러를 포함한 웹 관련 bean을 등록하는 데 사용한다.
- 독자적인 context를 가지며, root-context 내 bean 사용이 가능하다.
- root-context 같은 경우 Service와 Repository(Dao), servlet-context 같은 경우 Controller를 담당한다.
* 겹치는 bean이 생길 경우 servlet-context의 빈을 우선시 한다.
'Programming > Spring' 카테고리의 다른 글
Spring - @RequiredArgsConstructor (0) | 2023.05.31 |
---|---|
Spring - 스프링 MVC 구현하기(Mapper, @Valid, 등...) (0) | 2023.05.30 |
Spring - 정리 (2023.05.26.FRI) (0) | 2023.05.26 |
Spring - Cookie (쿠키) (0) | 2023.05.26 |
Spring - TO DO (1) (0) | 2023.05.25 |