
스프링은 프록시 방식의 AOP를 사용한다. 따라서 AOP를 적용하려면 항상 프록시를 통해서 대상객체(Target)를 호출해야 한다. 이렇게 해야 프록시에서 먼저 어드바이스를 호출하여 부가기능을 수행하고, 이후에 대상 객체를 호출하여 핵심기능을 수행한다. 만약 프록시를 거치지 않고 대상 객체를 직접 호출하게 되면 AOP가 적용되지 않고, 어드바이스도 호출되지 않는다. 결론은 AOP를 적용한 객체 중, 대상객체(Target) 안에서 내부 호출하는 경우는 어드바이스가 적용되지 않게된다. 코드로 한번보자! CallLogAspect @Slf4j @Aspect public class CallLogAspect { @Before("execution(* hello.aop.internalcall..*.*(..))") pu..
개발/Spring
2022. 7. 24. 15:55