Spring #22 AOP Before Advice

underlier12·2020년 2월 14일
0

SPRING

목록 보기
22/25

22. AOP Before Advice

Before Advice 구현

이전 Around Advice와 달리 Before Advice의 경우 대상을 실행하기 전에 수행된다.

먼저 다음과 같이 클래스를 생성한다.

LogBeforeAdvice.java

Around Advice와 달리 Before Advice는 주 업무의 위치를 기입하지 않아도 된다.
(Around Advice의 invocation.proceed())

package spring.aop.advice;

import java.lang.reflect.Method;

import org.springframework.aop.MethodBeforeAdvice;

public class LogBeforeAdvice implements MethodBeforeAdvice{

	@Override
	public void before(Method method, Object[] args, Object target) throws Throwable {
		System.out.println("먼저 실행될 로직 ");
	}

}

setting.xml

이후 xml에서 DI에 대한 정보를 삽입하면 된다.

	<!-- Cross-cutting Concern(보조 업무 로직)을 활용할 경우 -->
	<bean id="target" class="spring.aop.entity.NewlecExam" p:kor="1" p:eng="2" p:math="1" p:com="3"/>
	<bean id="logAroundAdvice" class="spring.aop.advice.LogAroundAdvice" />
	<bean id="logBeforeAdvice" class="spring.aop.advice.LogBeforeAdvice" />
	<bean id="exam" class="org.springframework.aop.framework.ProxyFactoryBean">
		<property name="target" ref="target"></property>
		<property name="interceptorNames">
			<list>
				<value>logAroundAdvice</value>
				<value>logBeforeAdvice</value>
			</list>
		</property>
	</bean>

실행 결과

먼저 실행될 로직 
204ms 소요 
total is 7
먼저 실행될 로직 
203ms 소요 
avg is 1.75

Before Advice, Around Advice 모두 정상적으로 동작한다.

profile
logos and alogos

0개의 댓글