항상 용어가 헷갈려서, 용어를 확실하게 정리하는 것이 중요하다. 포인트컷: 어디에 부가기능을 적용할지, 범위를 정하는 곳이다. 주로 클래스와 메서드 이름으로 필터링한다.어드바이스: 바로 전 글에서 작성했던 것 처럼 프록시가 호출하는 부가 기능이다.어드바이저: 단순하게 하나의 포인트컷과 하나의 어드바이스를 가지고 있는 것이다. 포인트 컷을 직접 정의할 수도 있지만 스프링이 이미 만들어둔 구현체를 사용하면 편하다. 포인트컷은 정말 많은 포인트컷을 제공한다.1. NameMatchMethodPointcut: 메서드 이름을 기반으로 매칭, 내부에서는 PatterMatchUtils를 사용2. JdkRegexMethodPointcut: JDK 정규 표현식을 기반으로 포인트컷을 매칭3. TruePointcu: 항상 참..
저번 시간에 Proxy를 만들 때 JDK 동적 프록시를 사용할 때는 InvocationHandler를, CGLIB를 사용할때는 MethodInterceptor를 각각 구현했어야했다.매번 이렇게 다른 것을 해결해 주는 것이 ProxyFactory이다.팩토리 하나로 편리하게 동적 프록시를 생성할 수 있으며 프록시 패곹리는 인터펭이스가 있다면 JDK 동적 프록시를 사용하고, 구체 클래스만 있다면 CGLIB를 사용한다. ProxyFactory 흐름 스프링은 위와같은 인터페이스, 구체클래스일 때 부가 기능을 적용할 때 Advice라는 새로운 개념을 도입했다.개발자는 InvocationHandler나 MethodInterceptor는 Advice만 만들면 된다.프록시 팩토리를 사용하면 Advice를 호출하는 Inv..
인터페이스 기반 프록시와 클래스 기반 프록시인터페이스 기반으로 필수로 생성할 때는, 기존 로직을 구현하고, 구현하는 곳에서 추가 기능을 사용하며 이를 스프링 빈에 등록해서 사용한다.클래스 기반 프록시는 부모를 상속받아 기존 로직을 오버라이드해서 사용했다. 결론적으로, 인터페이스가 없어도 클래스 기반의 프록시가 잘 적용된다.하지만 지금은 부가기능을 추가하려면, 추가할 기능 만큼 모든 프록시를 직접 생성해야하는 문제가 있다.이를 해결하기 위해 나온 것이 동적 프록시이다. 1. 리플랙션리플렉션은 클래스나 메서드의 메타정보를 사용해서 동적으로 호출하는 메서드를 변경할 수 있다.다만, 이 기술을 써서 동적프록시가 동작한다는 것을 이해하는 것이 중요하지 실제로 사용할 땐 정말 주의를 해야한다.만약 메서드 명을 잘..
Spring AOP 로드맵 AOP를 학습하기 위해 김영한 강사님의 Spring 고급 편 강의를 듣고 있는데, AOP를 보다 더 완벽하게 이해하기 위해서는 아래의 단계를 따라야 한다. 학습해야 할 내용이 방대하지만 차근차근 나아가보자. 이번 글에서는 저번 글에 이어 Spring이 사용하는 디자인 패턴 중 전략 패턴 그중에서도 데코레티어 패턴을 다룬다. 1. 동시성 문제 - 쓰레드 로컬2. 전략 패턴 - 템플릿 메서드 패턴과 콜백 패턴3. 프록시 - 프록시 패턴과 데코레티어 패턴4. 동적 프록시5. Spring 지원 동적 프록시6. 빈 후처리기7. @Aspect AOP8. Spring AOP 프록시 패턴과 디코레이터 패턴은 저번 글에서 언급했지만, 의도에 따라 구분된다.프록시 패터은 캐싱, 로그, 접근 제..
인터페이스를 직접 구현하면서, 필드에 직접 구현한 인터페이스를 갖고 의존성 주입을 받는다.처음에는 새로 생성하며 그 후에는 저장된 캐시 값을 그대로 사용하여 접근을 제어한다.Spring AOP 로드맵AOP를 학습하기 위해 김영한 강사님의 Spring 고급 편 강의를 듣고 있는데, AOP를 보다 더 완벽하게 이해하기 위해서는 아래의 단계를 따라야 한다. 학습해야 할 내용이 방대하지만 차근차근 나아가보자. 이번 글에서는 Spring이 사용하는 디자인 패턴 중 전략 패턴 그중에서도 프록시 패턴과 데코레티어 패턴을 다룬다. 1. 동시성 문제 - 쓰레드 로컬 2. 전략 패턴 - 템플릿 메서드 패턴과 콜백 패턴 3. 프록시 - 프록시 패턴과 데코레티어 패턴 4. 동적 프록시 5. Spring 지원 동적 프록시 6...
Spring AOP 로드맵AOP를 학습하기 위해 김영한 강사님의 Spring 고급 편 강의를 듣고 있는데, AOP를 보다 더 완벽하게 이해하기 위해서는 아래의 단계를 따라야 한다.학습해야 할 내용이 방대하지만 차근차근 나아가보자.이번 글에서는 Spring이 사용하는 디자인 패턴 중 전략 패턴 그중에서도 템플릿 메서드 패턴을 다룬다.1. 동시성 문제 - 쓰레드 로컬2. 전략 패턴 - 템플릿 메서드 패턴과 콜백 패턴3. 프록시 - 프록시 패턴과 데코레티어 패턴4. 동적 프록시5. Spring 지원 동적 프록시6. 빈 후처리기7. @Aspect AOP8. Spring AOP템플릿 메서드 패턴(Template Method Pattern)등장 배경템플릿 메서드 패턴은 반복되는 작업의 구조를 표준화할 필요성에서 출..