[ 이전 포스팅 ]
- 실제 객체의 인터페이스 유무에 따라서 JDK 동적 프록시 또는 CGLIB를 자동으로 선택해주는 프록시 팩토리의 도입
- 어드바이저의 도입
- 포인트컷(Pointcut) : 어디에 부가기능을 적용할지 어디에 적용하지 않을지 판단하는 필터링 로직이다. 주로 클래스와 메서드의 이름으로 필터링 한다.
- 어드바이스(Advice) : 프록시가 호출하는 부가기능이다.
- 어드바이저(Advisor) : 포인트컷1 + 어드바이스1 이다. 즉 어디에 어떤로직을 적용할지 알고 있다. 프록시팩토리에 반드시 주입되어야하며, 생성되는 프록시객체에 주입된다.
- 하지만 프록시객체를 빈으로 등록해야 부가기능이 적용되므로, 수동 빈 등록에서만 가능하고 일일이 프록시객체 생성과정을 추가해줘야하는 한계가 있다.
- 객체를 빈으로 등록하기 직전에 프록시 객체로 바꿔주는 빈 후처리기에 대해 알아보자.
[ 빈 후처리기 ]
빈 후처리기란?
- Spring은 Application 실행 시 Bean으로 등록된 객체를 생성하고 DI 컨테이너에 등록한다.
- 빈 후처리기는 생성된 객체를 빈으로 등록하기 전에 객체를 조작할 수도 있고, 완전히 다른 객체로 바꿔치기 하는 것도 가능하다.
- BeanPostProcessor Interface를 구현한 뒤 스프링 빈으로 추가하면 된다.
- 다른 빈보다 컨테이너에 먼저 등록되며, 다른 빈들이 등록될 때 후처리를 수행한다.

- 생성 : 스프링 빈으로 등록 된 객체를 생성함
- 전달 : 생성된 객체를 DI 컨테이너에 등록하기 직전 빈 후처리기로 전달됨
- 후 처리 작업 : 빈 후처리기는 전달 받은 스프링 빈 객체를 조작하거나 다른 객체로 바꿈
- 등록 : 빈 후처리기는 빈을 반환하는데, 이 때 반환한 객체가 빈으로 등록됨
빈 후처리기 - 바꿔치기
