Mega Code Archive

 
Categories / Java / Spring
 

AOP Annotation

File: Main.java import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; import java.lang.reflect.Method; import org.springframework.aop.Advisor; import org.springframework.aop.AfterReturningAdvice; import org.springframework.aop.MethodBeforeAdvice; import org.springframework.aop.framework.ProxyFactory; import org.springframework.aop.support.DefaultPointcutAdvisor; import org.springframework.aop.support.annotation.AnnotationMatchingPointcut; public class Main {   public static void main(String[] args) {     SampleBean target = new SampleBean();     AnnotationMatchingPointcut pc = new AnnotationMatchingPointcut(null, SimpleAnnotation.class);     Advisor advisor = new DefaultPointcutAdvisor(pc, new SimpleBeforeAdvice());     ProxyFactory pf = new ProxyFactory();     pf.setTarget(target);     pf.addAdvisor(advisor);     SampleBean proxy = (SampleBean) pf.getProxy();     proxy.getName();     proxy.getHeight();   } } class SimpleBeforeAdvice implements MethodBeforeAdvice {   public void before(Method method, Object[] args, Object target) throws Throwable {     System.out.println("Before method " + method);   } } @SimpleAnnotation class SampleBean {   @SimpleAnnotation   public String getName() {     return "AAA";   }   public void setName(String name) {   }   public int getHeight() {     return 201;   } } @Target( { ElementType.METHOD, ElementType.TYPE }) @Retention(RetentionPolicy.RUNTIME) @interface SimpleAnnotation { } class AnnotationAfterAdvice implements AfterReturningAdvice {   public void afterReturning(Object returnValue, Method method, Object[] args, Object target)       throws Throwable {     System.out.print("After annotated method: " + method);   } }                        Spring-AOPAnnotation.zip( 4,746 k)