[spring Series] 43.spring, spi(serviceproviderinterface) 1
1. SPI(ServiceProviderInterface)란?
- 스프링 프레임워크 자체의 확장/ 커스터마이징을 허용하는 인터페이스
- 프레임워크 내부 동작에 개발자가 직접 Hook을 끼워 넣을 수 있는 규약
2. 주요 SPI 확장 목록
1. BeanFactoryPostProcessor
- BeanDefinition이 등록된 후, 인스턴스 생성 전에 호출
- BeanDefinition을 직접 수정/ 추가/ 삭제할 수 있는 기회가 주어진다.
- 구현체
- ConfigurationClassPostProcessor
- PropertySourcePlaceholderConfigurer
- CustomEditionConfigurer
2. BeanPostProcessor
- AutowiredAnnotationBeanPostProcessor:
- Bean 인스턴스 생성 후 DI annotation 분석, 주입
- initDestroyAnnotationBeanPostProcessor:
- @PostConstruct, @PreDestory 등 life-cycle annotation 처리
- AnnotationAwareAspectJAutoProxyCreator:
- AOP Advisor/Adivce/Pointcut 정보 분석
- Proxy가 필요하면 getBean() 시점 래핑
3. FactoryBean
-
3. Spring의 확장성
- Spring이 OCP를 유지하면서 진화/ 확장 가능한 근본 원리