기존의 어노테이션 기반 ADP를 POJO와 XML기반 AOP로 변경하자.
POJO란 : plain Old Java Object
자바로 만들어진 순수한 객체를 말한다.
MyAspect 변경
package aop003;
import org.aspectj.lang.JoinPoint;
public class MyAspect {
public void before(JoinPoint joinPoint){
System.out.println("얼굴 인식 확인: 문 개방");
}
}
<aop:aspectj-autoproxy/>
<bean id="myAspect" class="aop003.MyAspect"/>
<bean id="boy" class="aop003.Boy"/>
<bean id="girl" class="aop003.Girl"/>
<aop:config>
<aop:aspect ref="myAspect">
<aop:before method="before" pointcut="execution(* runSomething())"/>
</aop:aspect>
</aop:config>
</beans>
얼굴 인식 확인: 문 개방
컴퓨터로 게임을 한다.
얼굴 인식 확인: 문 개방
요리한다.
일반적으로는 간단한 경우에는 어노테이션 기반으로, 복잡한 설정이 필요한 경우에는 XML 기반으로 설정하는 것이 일반적이다.
After Advice
- xml 기반으로package aop004;
import org.aspectj.lang.JoinPoint;
public class MyAspect {
public void before(JoinPoint joinPoint){
System.out.println("얼굴 인식 확인: 문 개방");
}
public void after(JoinPoint joinPoint) {
System.out.println("외출: 문 잠금");
}
}
<aop:config>
<aop:aspect ref="myAspect">
<aop:before method="before" pointcut="execution(* runSomething())"/>
<aop:after method="after" pointcut="execution(* runSomething())"/>
</aop:aspect>
</aop:config>
얼굴 인식 확인: 문 개방
컴퓨터로 게임을 한다.
외출: 문 잠금
얼굴 인식 확인: 문 개방
요리한다.
외출: 문 잠금
<?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:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-4.0.xsd" >
<aop:aspectj-autoproxy/>
<bean id="myAspect" class="aop004.MyAspect"/>
<bean id="boy" class="aop004.Boy"/>
<bean id="girl" class="aop004.Girl"/>
<aop:config>
<aop:pointcut id="iampc" expression="execution(* runSomething())"/>
<aop:aspect ref="myAspect">
<aop:before method="before" pointcut-ref="iampc"/>
<aop:after method="after" pointcut-ref="iampc"/>
</aop:aspect>
</aop:config>
</beans>