
org.springframework.beans.factory
스프링 컨테이너의 최상위 인터페이스
스프링 빈을 관리하고 조회하는 역할
“두 컨테이너 중 특별한 이유가 없다면 ApplicationContext를 사용하라"
WHY??? “빈 관리, 조회하는 기능 외에 수많은 부가 기능"
org.springframework.context
더 고급 생명주기 관리 기능을 제공
객체의 생성과 관계 설정이 다가 아니다
객체가 만들어지는 방식 or 시점 or 전략 등을 다르게
후처리나 정보의 조합 인터셉트 등과 같은 다양한 기능이 존재
스프링 컨테이너는 빈들 간의 의존성을 자동으로 연결(autowire)할 수 있다.
각 bean 별로 지정 가능
BeanFactory -> XML로만 가능, Lazy Loading(지연 로딩)
ApplicationContext -> 어노테이션 지원, Eager Loading(즉시 로딩)
Bean 생성/로딩 시점
Application Context -> 기본적으로 Eager Loading (즉시 로딩)
➡️ 설정이나 주변 환경의 오류를 즉시 발견할 수 있기 때문 !
BeanFactoryPostProcessor ➡️ 빈에 대한 조작을 하기도 시작하기 전에
빈 설정정보(BeanDefinition)를 불러오고 조작하는 것
BeanPostProcessor ➡️ 빈이 초기화되는 시점(전,후)에서 부가적인 작업
실제 빈들이 생성되기 전에 빈의 정의나 설정 메타데이터에 작동
런타임 의존성을 해결하기 위해 호출
postProcessBeanFactoy(ConfigurableListableBeanFactory beanFactory) 메서드를 구현해서 사용
모든 빈들이 만들어진 직후에 객체의 내용이나 객체 자체를 변경하기 위한 것
2가지 메소드 제공
1) postProcessBeforeInitialization(초기화 전) 메소드
2) postProcessAfterInitialization(초기화 후) 메소드