본문 바로가기

Spring

[Spring] AOP 설정 변환 (xml -> @)

728x90
반응형

1. applicationContext.xml에서 스프링 컨테이너에게 지금부터 AOP 설정을 @로 한다고 선언

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:aop="http://www.springframework.org/schema/aop"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd
		http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.2.xsd">

   <context:component-scan base-package="com.kim.biz" />
   
	<!-- 해당 태그를 사용하므로 aop를 어노테이션으로 하겠다는 의미 -->
   <aop:aspectj-autoproxy></aop:aspectj-autoproxy> -->
    
</beans>

 

 

2. LogAdvice.java 해당 파일에 Aspect, Pointcut 설정 

@Before("aPointcut()) : aPointcut과 연결한다는 뜻

@Service를 상단에 기입하여 객체화

package com.kim.biz.common;

import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Service;

@Service 
@Aspect //aspect 처리된 횡단관심사야 
public class LogAdvice {

	  //내가 이용할 횡단관심 위에 사용
	  @Pointcut("execution(* com.kim.biz..*Impl.*(..))") 
	  public void aPointcut() {}
	  @Pointcut("execution(* com.kim.biz..*Impl.select*(..))") 
	  public void bPointcut() {}
	
	@Before("aPointcut()") 
	public void printLog(JoinPoint jp) {
		String methodName=jp.getSignature().getName();
		//현재 수행중인 포인트컷(핵심로직,CRUD)의 메서드명 
		Object[] args=jp.getArgs();
		//현재 수행중인 포인트컷(핵심로직,CRUD)이 사용하는 인자들의 정보 

		System.out.println("수행중인 핵심메서드명: " + methodName);
		System.out.println("사용하는 인자 ");
		System.out.println("==========");
		for(Object v:args) {
			System.out.println(v);
		}
	}
}

 

3. 수행결과 

xml파일로 설정한 것과 동일한 결과가 나옴 

728x90
반응형