Spring MVC 프로젝트 Annotation으로 Aspect가 적용되지 않을때(AOP)
package com.myboard.aop;
import java.sql.Date;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.context.annotation.EnableAspectJAutoProxy;
import org.springframework.stereotype.Component;
import org.springframework.util.StopWatch;
@Aspect
@Component
public class AroundExample {
public AroundExample() {
System.out.println("/////////////////Asepect생성/////////Asepect생성////////////Asepect생성////////Asepect생성");
}
@Pointcut("execution(* com.myboard.web.controller.BoardController.postInsert(..))")
public void insertBoard(){}//pointcut name
@Around("insertBoard()")//applying pointcut on before advice
public Object myadvice(ProceedingJoinPoint pjp) throws Throwable
{
StopWatch watch = new StopWatch();
watch.start();
Object obj=pjp.proceed();
watch.stop();
Double elapsedTimeBySecond = watch.getTotalTimeSeconds();
System.out.println("──────────────────────────insertBoard 메소드 소요시간 = "+elapsedTimeBySecond+"초───────────────────────────");
return obj;
}
}
해결
알고보니 @EnableAspectJAutoProxy 을 달아줘야 되는것이었다
수정된 코드
@EnableAspectJAutoProxy //←이 부분
@Aspect
@Component
public class AroundExample {
public AroundExample() {
System.out.println("/////////////////Asepect생성/////////Asepect생성////////////Asepect생성////////Asepect생성");
}
@Pointcut("execution(* com.myboard.web.controller.BoardController.postInsert(..))")
public void insertBoard(){}//pointcut name
@Around("insertBoard()")//applying pointcut on before advice
public Object myadvice(ProceedingJoinPoint pjp) throws Throwable
{
StopWatch watch = new StopWatch();
watch.start();
Object obj=pjp.proceed();
watch.stop();
Double elapsedTimeBySecond = watch.getTotalTimeSeconds();
System.out.println("──────────────────────────insertBoard 메소드 소요시간 = "+elapsedTimeBySecond+"초───────────────────────────");
return obj;
}
}
정상 실행 화면