Spring AOP
부가기능
- 비즈니스 기능이 아닌 부수적인 기능 ⇒ 인프라 로직
- 반드시 필요하지 않고, 전영역에서 나타남
- 비즈니스 코드와 섞여서 이해하기 힘들게 만든다.
- 이때, AOP를 통해서 부가기능을 관리할 수 있게 함
AOP 구현방법
컴파일
- java → class가 될 때 AOP를 삽입
클래스 로드
프록시 패턴
- Spring AOP에서 사용하는 기법
- java를 proxy로 감싸고 AOP 삽입하는 기법
Private field에서는 프록시가 먹히지 않는다.
- 객체가 자기 자신의 method를 실행하면 proxy가 없는 상태로 실행
- proxy로 감싸여 있지 않는 객체는 적용이 안 된다.
추가내용
Spring AOP vs AspectJ
- 둘은 목적이 다름
- Spring AOP는 개발자가 겪는 문제를 해결하기 위한 간단한 기능 제공
- AspectJ 완벽한 AOP를 제공하려함