오라클자바커뮤니티에서 설립한 오엔제이프로그래밍
실무교육센터
(오라클SQL, 튜닝, 힌트,자바프레임워크, 안드로이드, 아이폰, 닷넷 실무전문 강의)
DefaultPointcutAdvisor는
단순히 Pointcut과 Advice를 결합시키는
클래스이다.<?xml:namespace prefix = o ns =
"urn:schemas-microsoft-com:office:office" />
1. Advice가
적용될 클래스 두 개를 만들자.
[HelloWorld.java]
package defaultPointcutAdvisor;
public class HelloWorld {
String msg ;
public String getMsg() {
return "HelloWorld!! " + msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public String getName() {
return "HelloWorld.class";
}
}
[Magician.java]
package defaultPointcutAdvisor;
public class Magician {
public String jumoon;
public void setJumoon(String jumoon) {
this.jumoon = jumoon;
}
public String getJumoon()
{
return this.jumoon;
}
}
2. 사후충고를
구현한 Advice 클래스
[AfterAdvice.java]
package
defaultPointcutAdvisor;
import
org.springframework.aop.AfterReturningAdvice;
import
java.lang.reflect.Method;
public class AfterAdvice implements
AfterReturningAdvice{
//메소드가
리턴된후 실행되는 충고(Advice), 사후충고
public
void afterReturning(Object returnValue, Method method, Object[] args, Object
target) throws Throwable {
System.out.println(target.getClass() + "클래스
실행후: " + method);
}
}
3. TEST용 Main 함수
package
defaultPointcutAdvisor;
import
org.springframework.aop.Advisor;
import
org.springframework.aop.aspectj.AspectJExpressionPointcut;
import
org.springframework.aop.framework.ProxyFactory;
import
org.springframework.aop.support.DefaultPointcutAdvisor;
public class MainTest
{
public
static void main(String[] args) {
HelloWorld target1 = new HelloWorld();
Magician target2 = new Magician();
//AspectJ의
포인트컷 정의를 이용
AspectJExpressionPointcut pc = new
AspectJExpressionPointcut();
//defaultPointcutAdvisor
패키지아래
모든 클래스의 get으로 시작되는 메소드, 인자는
관계없다.
pc.setExpression("execution(*
defaultPointcutAdvisor..*.get*(..))");
//advisor는 Pointcut과 Advice가 결합된 것
댓글 없음:
댓글 쓰기