📌 IoC Container라고 불리우는 ApplicationContext 계층 구조
📌 IoC (Inversion Of Control 제어의 역전)
컴포넌트 의존관계 설정, 설정, 및 생명주기를 해결하기 위한 디자인 패턴이다.
객체의 생성 및 생명주익에 대한 모든 객체의 제어권이 바뀌었다는 것을 의미한다.
즉, 필요한 객체가 있으면 내가 직접 생성해서 사용하는 것이 아니고, 외부에서 나한테 필요한 객체를 생성해서 던져준다. 타입만 일치하면 나는 받아서 사용할 수 있다.
📌 IoC 컨테이너
▪ IoC 방법으로 빈(bean)을 관리한다는 의미에서 IoC 컨테이너라고 한다.
▪ 개발자가 직접 객체를 생성하지 않고 객체의 생성과 소멸을 컨테이너가 관리한다.
즉, 컨테이너에 객체를 담아두고 필요시 컨테이너로부터 객체를 가져와 사용한다.
▪ 객체간의 의존성 설정은 DI(Dependency Injection)를 이용한다.
▪ 컨테이너 자체도 빈(bean)으로서 BeanFactory와 ApplicationContext가 컨테이너가 구현해야 할 기본 인터페이스 이다.
▪ 빈(bean)을 생성하고 서로간에 필요시 엮어주고 우리에게 제공해준다. 또한 필요 없어지면 빈(bean)을 제거도 해준다.
📌 BeanFactory와 ApplicationContext는 뭐지?
IoC 컨테의너의 핵심적인 2가지 클래스라는 건 알겠는데 이것들은 또 뭘까?
- BeanFactory란?
자바 객체(bean) 인스턴스르 생성, 설정, 관리하느 실질적인 컨테이너 - ApplicationContext
BeanFactory를 상속받고 있으며 확장 버전이다.
결국 두 클래스 모두 Bean을 생성하고, 관리하는 클래스이다.
📌 API Doc 보기
📌 ApplicationContext에 빈의 설정 정보를 알려주는 방식 3가지 (Configuration metadata)
- xml based configuration
- annotation based configuration + 최소한의 xml 필요 ( 사용할 방법 ) ⇒ Spring 2.5부터 지원
- java based configuration ⇒ Spring 3.0부터 지원
📌 POJO (Plain Old Java Object)
⇒ 평이한 옛날에 사용했던 자바 객체
⇒ 어떠한 extends 또는 implements가 없음 따라서 스프링의 빈은 플랫폼에 독립적이다.
예> public class LoginServlet extends HttpServlet{}
반대로 서블릿은 (LoginServlet) 웹 환경에 의존적임
📌 prefix 및 패키지
ApplicationContext ctx = new GenericXmlApplicationContext(”classpath:com/config/user.xml”,
ApplicationContext ctx = new GenericXmlApplicationContext(”classpath:com/config/user.xml”,
“file:c:\\temp\\user2.xml”);
'Framework > SPRING FRAMEWORK' 카테고리의 다른 글
다양한 의존성 주입 방법 (DI) (0) | 2023.08.28 |
---|---|
DI (Dependency injection) (0) | 2023.08.28 |
02. 빈 얻기 (0) | 2023.08.26 |
01. 빈 생성_prefix (0) | 2023.08.26 |
01. 빈 생성_multi (0) | 2023.08.26 |