java/com/example/aop/LogAspect.java
공통 작업을 구현하기 위한 용도
package com.example.aop;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
@Component
@Aspect
public class LogAspect {
Logger logger = LoggerFactory.getLogger(LogAspect.class);
// 패키지가 com.example.controller인 컴트롤러는 모두 수행
@Around("execution(* com.example.controller.*Controller.*(..)) or execution(* com.example.mapper.*Mapper.*(..))")
public Object printLog(ProceedingJoinPoint joinPoint) throws Throwable {
// 현재시간 보관
long start = System.currentTimeMillis();
// 수행되는 클래스명
String className = joinPoint.getSignature().getDeclaringTypeName();
String type = "";
if(className.contains("Controller") == true ) {
type = "Controller => ";
}
else if(className.contains("Mapper") == true) {
type = "Mapper => ";
}
else if(className.contains("Service") == true) {
type = "Service => ";
}
// 끝나는 시간
long end = System.currentTimeMillis();
String methodName = joinPoint.getSignature().getName();
logger.info(type + className + "->" + methodName);
logger.info("execute time: " + (end-start));
System.out.println("클래스명: "+ className + "메소드명: " + methodName);
return joinPoint.proceed();
}