스프링 레시피 CH2.19 AOP를 이용해 POJO에 상태 추가하기
과제 기존 객체에 새로운 상태를 추가해서 호출 횟수, 최종 수정 일자 등 사용 내역을 파악하고 싶은 경우가 있다. 모든 객체가 동일한 베이스 클래스를 상속하는 건 말이 안된다. 레이어 구조가 다른 여러 클래스에 상태를 추가하기란 더욱 어렵다. 해결책 상태 필드가 위치한 구현 클래스의 인터페이스를 기존 객체에 들여온 다음, 특정 조건에 따라 상태값을 바꾸는 어드바이스를 작성한다. 풀이 각 Calculator 객체의 호출 횟수를 기록하려고 한다. 원본 클래스에는 호출 횟수를 담을 카운터 필드가 없기 때문에 AOP 인트로덕션을 적용한다. 먼저 Counter 인터페이스를 작성한다. public interface Counter { void increase(); int getCount(); } 그리고 간단한 구현 ..
2023.12.19