maven에 aop 추가, AspectJ 추가
서로의 차이점 aop는 spring 내장, AspectJ는 좀 더 정밀한 aop적용가능
로그 적용 파일 위치
AspectJ 사용
@Component
@Aspect
public class LoggingAdvice {
private static final Logger logger = LoggerFactory.getLogger(LoggingAdvice.class);
// target 메서드의 파라미터등 정보를 출력합니다.
@Before("execution(* com.bookshop01.*.service.*.*(..)) or "
+ "execution(* com.bookshop01.*.dao.*.*(..))")
public void startLog(JoinPoint jp) {
logger.info("-------------------------------------");
logger.info("-------------------------------------");
// 전달되는 모든 파라미터들을 Object의 배열로 가져옵니다.
logger.info("1:" + Arrays.toString(jp.getArgs()));
//해당 Advice의 타입을 알아냅니다.
logger.info("2:" + jp.getKind());
// 실행하는 대상 객체의 메소드에 대한 정보를 알아낼 때 사용합니다.
logger.info("3:" + jp.getSignature().getName());
// target 객체를 알아낼 때 사용합니다.
logger.info("4:" + jp.getTarget().toString());
// Advice를 행하는 객체를 알아낼 때 사용합니다.
logger.info("5:" + jp.getThis().toString());
}
@After("execution(* com.bookshop01.*.service.*.*(..)) or "
+ "execution(* com.bookshop01.*.*.dao.*.*(..))")
public void after(JoinPoint jp) {
logger.info("-------------------------------------");
logger.info("-------------------------------------");
// 전달되는 모든 파라미터들을 Object의 배열로 가져옵니다.
logger.info("1:" + Arrays.toString(jp.getArgs()));
// 해당 Advice의 타입을 알아냅니다.
logger.info("2:" + jp.getKind());
// 실행하는 대상 객체의 메소드에 대한 정보를 알아낼 때 사용합니다.
logger.info("3:" + jp.getSignature().getName());
// target 객체를 알아낼 때 사용합니다.
logger.info("4:" + jp.getTarget().toString());
// Advice를 행하는 객체를 알아낼 때 사용합니다
logger.info("5:" + jp.getThis().toString());
}
com.bookshop01 패키지의 service와 dao 패키지의 모든 메서드 전에 로그실행
com.bookshop01 패키지의 service와 dao 패키지의 모든 메서드 후에 로그실행