[spring MVC]노트정리 : AOP 사용(log확인, session check)

Young eee·2023년 2월 24일
0

SpringMVC

목록 보기
7/7
post-thumbnail

💻 Spring에서 AOP사용

  • AOP(Aspect Oriented Programming) 관점지향
  • 목적 : 감시자
    log확인용
    session check용

pom.xml에 의존성 추가

	<dependency>
  		<groupId>org.springframework</groupId>
  		<artifactId>spring-aop</artifactId>
  		<version>5.3.25</version>
  	</dependency>

AopProc.java

  • log확인용
    controller가 실행될 때 마다 콘솔에 찍어줌
@Aspect
public class AopProc {
	
//	@Around("within(mul.cam.a.controller.*) or within(mul.cam.a.dao.*.*)")
	@Around("within(mul.cam.a.controller.*)")
	public Object loggerAop(ProceedingJoinPoint joinpoint) throws Throwable{	
		// logger
		String signatureStr = joinpoint.getSignature().toShortString();
		
		try {
			Object obj = joinpoint.proceed();	// 실행시
			
			System.out.println("AOP log:" + signatureStr + " 메소드 실행 " + new Date());
			
			return obj;
			
		}finally {
//			System.out.println("실행후 : " +System.currentTimeMillis());
		}
	}
	
	

}
  • session check
    로그인세션을 확인해주는 부분으로 memberController는 다른곳으로 빼놔야함. 첫 페이지에서는 당연히 로그인이 되어있지 않은데 감시를 하면 에러가 남. within에서 dao를 뺀 것도 동일한 이유
@Aspect
public class AopProc {
	
//	@Around("within(mul.cam.a.controller.*) or within(mul.cam.a.dao.*.*)")
	@Around("within(mul.cam.a.controller.*)")
	public Object loggerAop(ProceedingJoinPoint joinpoint) throws Throwable{
		
		// session check
		HttpServletRequest request = ((ServletRequestAttributes)RequestContextHolder.currentRequestAttributes()).getRequest();
		if(request != null) {
			HttpSession session = request.getSession();
			MemberDto login = (MemberDto)session.getAttribute("login");
			if(login == null) {
				return "redirect:/sessionOut.do";
			}
		}
	}	
}

0개의 댓글