1. 스프링 컨텍스트란?
애플리케이션 전체에서 사용되는 다양한 객체(빈)들의 생명주기를 관리하고, 이들 간의 의존성을 주입하는 등의 역할을 한다.
2. BeanFactory와 ApplicationContext
✔️BeanFactory
- 스프링 컨테이너의 최상위 인터페이스다.
- 스프링 빈을 관리하고 조회하는 역할을 담당한다.
- `getBean()` 을 제공한다.
- BeanFactory를 직접 사용하는 경우는 거의 없다.
✔️ApplicationContext
- BeanFactory 기능을 모두 상속받아서 제공한다.
- 일반적으로 ApplicationContext를 스프링 컨테이너라 한다.
- BeanFactory보다 더 많은 부가 기능을 제공한다.
3. 다양한 형식의 설정 정보 지원
자바코드, XML, Groovy등을 지원한다.
✔️AnnotationConfigApplicationContext
- 자바 어노테이션을 사용하여 스프링 빈과 설정을 정의하고 싶을 때 사용한다.
- ApplicationContext 인터페이스를 확장하는 여러 구현체 중 하나
- 테스트 환경에서 빠르게 애플리케이션 컨텍스트를 설정하고 실행
✔️GenericXmlApplicationContext
- XML설정 파일넘길 때 사용한다.
- 최근 스프링 부트를 많이 사용하면서 XML기반 설정은 잘 사용하지 않지만 배워두면 좋다.
ApplicationContext ac = new
GenericXmlApplicationContext("appConfig.xml");
4. ConfigurableApplicationContext
ApplicationContext를 상속받아, 컨텍스트의 생명주기를 관리하는 기능을 추가할 수 있다.
ConfigurableApplicationContext ac = new AnnotationConfigApplicationContext(LifeCycleConfig.class);
NetworkClient client = ac.getBean(NetworkClient.class);
ac.close(); //컨텍스트를 닫아줘야한다.
5. ApplicationContext와 AnnotationConfigApplicationContext
김영한의 스프링 핵심 원리 기본편을 듣다보면,
//1번
ApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class);
//2번
AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class);
설정정보를 넘겨서 스프링 컨텍스트를 초기화하는 코드가 위 두가지로 쓰일 때가 있다.
🤔의문점
: 왜? 1번처럼 쓰기도 하고 2번으로 쓰기도 할까. 무슨 차이지?
💡해결점
: ApplicationContext는 AnnotationConfigApplicationContext의 상위 인터페이스다.
그래서 ApplicationContext는 기능이 적고, AnnotationConfigApplicationContext는 너무 많은 기능을 제공한다.
개발을 할 때는 가급적 기능을 적게 제공하는 상위 인터페이스를 사용해야, 향후 구현 클래스가 변경되어도 클라이언트 코드를 변경하지 않아도 된다. 그래서 실제 스프링 애플리케이션을 개발할 때는 변경에 유연하게 대응하기 위해 ApplicationContext를 사용한다.
강의에서는 AnnotationConfigApplicationContext 클래스에서 추가적으로 정의한 메서드를 사용하기 위해 AnnotationConfigApplicationContext타입으로 선언한 것이다.
'인프런 김영한 강의 정리 > 스프링 핵심원리 기본편' 카테고리의 다른 글
스프링 핵심원리 기본편 - 빈 스코프 (0) | 2024.05.10 |
---|---|
스프링 핵심 원리 기본편 - 빈 생명주기 콜백 (0) | 2024.05.07 |
스프링 핵심원리 기본편 - 의존관계 자동 주입(5)|조회한 빈이 모두 필요할 때, List, Map (0) | 2024.05.07 |
스프링 핵심 원리 기본편 - 의존관계 자동 주입(4)|조회하는 빈이 2개 이상,해결법, 애노테이션 직접 만들기 (0) | 2024.05.06 |
스프링 핵심원리 기본편 - 의존관계 자동 주입(3)|롬복과 최신 트랜드 (0) | 2024.05.06 |