advice 2

한가지 Pointcut으로 여러 Aspect를 사용하기, 프록시 적용순서. 2021-06-09

우린 앞전에 @Pointcut 설정을 하면서, excution 명시자에 대해서 쓴 적이 있다. 간단히 설명하자면, excution 명시자는 Adivce를 적용할 메서드를 지정할때 사용한다. 간단히 말해서 Pointcut은 "where" 이고, Advice는 "when"이다. 그런데 Advice를 Aspect의 실질적인 적용이라 해도 무방하다. 이유는 애초에 @Around 가 붙은 메서드에서 공통의 기능을 실행하고, 대상객체의 메서드도 호출하여서, 앞/뒤, 익셉션 유무등에 따라 코드를 짤수 있기 때문이다. 즉, Advice의 적용은 Aspect 의 적용이다. @Around 애너테이션에 공통의 기능과 "when" 그것을 실행할지 구현하기 때문이다. 그래서 Pointcut이 정하는 범위는 그냥 Advice의 ..

스프링 AOP의 기본 개념: Advice, joinpoint,Pointcut,Aspect 2021-06-07

우선 이전 포스트에서 AOP(Aspect oriented programing)이란 공통의 기능과 핵심기능의 분리를 통해 재사용성을 높여주는 프로그래밍 기법이라고 설명하였고, 스프링은 AOP를 프록시를 통해 구현한다고 설명하였다. 일반적인 AOP구현 방식은 총 3가지 방법이 있다. 1.컴파일 시점에 공통의 기능을 구현한 코드를 넣어준다. 2.클래스 로딩 시점에 바이트 코드에 공통의 기능을 구현한 코드를 넣어준다. 3.런타임 중 프록시 객체를 생성해서 공통의 기능을 삽입한다. 이 3가지 방법중 스프링에서 사용하는 방식은 3번이다. 스프링 AOP는 프록시 객체를 자동으로 만들어서 필요한 시점(PointCut)에 실행해준다. 그래서 공통기능을 구현한 클래스만 알맞게 구현하면 된다. 우선 스프링의 AOP의 용어들..