실습1 ) 서비스 기능에 반환이 있는 경우,
그 반환값이 배열일때는 아무일x
그 반환값이 DTO 일때 >> 어떤 DTO인지 로그찍기
실습2 ) CUD 에 대해서
전에 DB 접근 발생! 이라고 로그찍기
후에 DB 변경 완료! 로그찍기
Pointcut 참조 메서드
@Pointcut("execution(* com.nsd.app.biz..*Impl.*(..))")
public void check_CRUD() {}
실습 1 : 서비스 기능에 반환이 있는 경우
더보기
@Around("PointcutCommon.check_CRUD()")
public Object check_CRUD(ProceedingJoinPoint pjp) throws Throwable{
System.out.println("TestReturnObj.java method:check_CRUD AOP:Around log 시작");
Object result = pjp.proceed();// 메서드를 실행
String methodName = pjp.getSignature().getName();
System.out.println("TestReturnObj.java method:check_CRUD AOP:Around log 실행중인 methodName : [" + methodName + "]");
if(methodName.contains("SelectOne")){
String dtoName = result.getClass().getSimpleName();
if (dtoName.lastIndexOf("DTO") > 0){
System.out.println("TestReturnObj.java method:check_CRUD AOP:Around 조건:dtoName.lastIndexOf(\"DTO\") > 0 log 반환된 DTO : [" + dtoName + "]");
}
}
System.out.println("TestReturnObj.java method:check_CRUD AOP:Around log 종료");
return result;
}
실습2 : CUD 에 대해서 DB 접근 변경 로그 찍기
더보기
@Around("PointcutCommon.check_CRUD()")
public Object check_CRUD(ProceedingJoinPoint pjp) throws Throwable{
System.out.println("TestReturnObj.java method:check_CRUD AOP:Around log 시작");
String methodName = pjp.getSignature().getName();
System.out.println("TestReturnObj.java method:check_CRUD AOP:Around log 실행중인 methodName : [" + methodName + "]");
if(!methodName.contains("Select")){
System.out.println("DB 접근 중");//메서드 실행전 로그 작성
result = pjp.proceed();//메서드 실행
boolean flag = (boolean) result;
if(flag){//메서드 실행 후 true를 반환하면
System.out.println("DB 변경 완료!");//로그 작성
}
}
System.out.println("TestReturnObj.java method:check_CRUD AOP:Around log 종료");
return result;
}
실습 1 + 실습 2 합친 코드
더보기
@Around("PointcutCommon.check_CRUD()")
public Object check_CRUD(ProceedingJoinPoint pjp) throws Throwable{
System.out.println("TestReturnObj.java method:check_CRUD AOP:Around log 시작");
Object result = pjp.proceed();
String methodName = pjp.getSignature().getName();
System.out.println("TestReturnObj.java method:check_CRUD AOP:Around log 실행중인 methodName : [" + methodName + "]");
if(!methodName.contains("Select")){
System.out.println("DB 접근 중");
result = pjp.proceed();
boolean flag = (boolean) result;
if(flag){
System.out.println("DB 변경 완료!");
}
}
else{
String dtoName = result.getClass().getSimpleName();
if (dtoName.lastIndexOf("DTO") > 0){
System.out.println("TestReturnObj.java method:check_CRUD AOP:Around 조건:dtoName.lastIndexOf(\"DTO\") > 0 log 반환된 DTO : [" + dtoName + "]");
}
}
System.out.println("TestReturnObj.java method:check_CRUD AOP:Around log 종료");
return result;
}
728x90
'국비 내용 정리 > 문제' 카테고리의 다른 글
국비 33일차 실습 문제 (0) | 2024.08.18 |
---|---|
국비 28일차 실습 문제 (0) | 2024.08.11 |
JSP 이해하기 문제(ID 비교) (0) | 2024.08.06 |