스프링프레임워크,AOP 포인트컷(pointcut),NameMatchMethodPointcut 이론및실습/포인트컷/Advisor/타겟클래스/위빙(자바동영상/스프링동영상/스프링교육)
http://ojc.asia/bbs/board.php?bo_table=LecSpring&wr_id=870
ojc.asia

스프링프레임워크,AOP 포인트컷(pointcut),NameMatchMethodPointcut 이론및실습/포인트컷/Advisor/타겟클래스/위빙(자바동영상/스프링동영상/자바동영상/자바교육/스프링교육/SpringFramework/스프링프레임워크/스프링학원/자바학원/자바/JAVA)
[포인트컷(Pointcut) - NameMatchMethodPointcut]
가끔은 메소드 시그네처, 리턴형은 무시하고 메소드 이름으로 적용여부를 판단하는 포인트 컷이 필요하다.
이때 사용되는 포인트 컷이 NameMatchMethodPointcut 이다.
포인트 컷으로 사용할 클래스를 만들지 않아도 되며 직접 NameMatchMethodPointcut을 new 하면 된다.
-- 실습
[pom.xml에 추가]
<properties>
<org.springframework-version>5.2.9.RELEASE</org.springframework-version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${org.springframework-version}</version>
</dependency>
</dependencies>
[First.java]
public class First {
public void one() {
System.out.println("First One...");
}
public void two() {
System.out.println("First Two...");
}
public void three() {
System.out.println("First Three...");
}
}
[Second.java]
public class Second {
public void one() {
System.out.println("Second One...");
}
public void two() {
System.out.println("Second Two...");
}
public void three() {
System.out.println("Second Three...");
}
}
[SimpleAdvice.java]
import org.aopalliance.intercept.MethodInterceptor;
import org.aopalliance.intercept.MethodInvocation;
public class SimpleAdvice implements MethodInterceptor {
public Object invoke(MethodInvocation invocation) throws Throwable {
System.out.println(invocation.getMethod().getName());
Object o = invocation.proceed();
System.out.println("... SimpleAdvice의 충고가 적용됨 ...");
return o;
}
}
[NameMatchMethodPointcutExam.java]
import org.springframework.aop.Advisor;
import org.springframework.aop.framework.ProxyFactory;
import org.springframework.aop.support.DefaultPointcutAdvisor;
import org.springframework.aop.support.NameMatchMethodPointcut;
public class NameMatchMethodPointcutExam {
public static void main(String[] args) {
First target = new First();
Second target2 = new Second();
// Advisor
NameMatchMethodPointcut pc = new NameMatchMethodPointcut();
pc.addMethodName("one");
pc.addMethodName("two");
Advisor advisor = new DefaultPointcutAdvisor(pc, new SimpleAdvice());
// Proxy
ProxyFactory pf = new ProxyFactory();
pf.setTarget(target);
pf.addAdvisor(advisor);
First f = (First) pf.getProxy();
f.one();
f.two();
f.three();
System.out.println("-------------------");
// Proxy
ProxyFactory pf2 = new ProxyFactory();
pf2.setTarget(target2);
pf2.addAdvisor(advisor);
Second f2 = (Second) pf2.getProxy();
f2.one();
f2.two();
f2.three();
}
}
[실행결과]
one
First One...
... SimpleAdvice의 충고가 적용됨 ...
two
First Two...
... SimpleAdvice의 충고가 적용됨 ...
First Three...
-------------------
one
First One...
... SimpleAdvice의 충고가 적용됨 ...
two
First Two...
... SimpleAdvice의 충고가 적용됨 ...
First Three...
#NameMatchMethodPointcut, #스프링포인트컷, #스프링충고, #포인트컷, #스프링pointcut, #스프링AOP, #스프링advice, #SpringAOP, #스프링DI, #스프링IoC, #SpringDI, #SpringIoC, #자바스프링, #Spring동영상, #Spring강의, #스프링프레임워크, #스프링교육, #스프링학원, #스프링강좌, #스프링강의, #자바학원, #자바, #스프링동영상, #자바동영상, #스프링프레임워크교육, #스프링프레임워크강의, #스프링프레임워크학원
댓글 없음:
댓글 쓰기