RegexPointcut .java
package com.studyspring.ch3;
import org.springframework.aop.Advisor;
import org.springframework.aop.framework.ProxyFactory;
import org.springframework.aop.support.DefaultPointcutAdvisor;
import org.springframework.aop.support.JdkRegexpMethodPointcut;
public class RegexPointcut {
public static void main(String[] args) {
MultipleMethod target=new MultipleMethod();
JdkRegexpMethodPointcut pc=new JdkRegexpMethodPointcut();
pc.setPattern(".*get.*");
Advisor advisor=new DefaultPointcutAdvisor(pc,new BeforeAdvicetest());
ProxyFactory pf=new ProxyFactory();
pf.addAdvisor(advisor);
pf.setTarget(target);
MultipleMethod proxy=(MultipleMethod)pf.getProxy();
proxy.setAge(25);
proxy.setName("David");
proxy.setTitle("xiaodongxi@sahu.com");
proxy.getAge();
proxy.getName();
proxy.getTitle();
}
}
MultipleMethod.java
package com.studyspring.ch3;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
public class MultipleMethod {
private Log log=LogFactory.getLog(MultipleMethod.class);
private String name;
private int age;
private String title;
public int getAge() {
log.info("我们处理get方法");
System.out.println("我们处理get方法");
return age;
}
public void setAge(int age) {
log.info("我们处理set方法");
System.out.println("我们处理set方法");
this.age = age;
}
public String getName() {
log.info("我们处理get方法");
System.out.println("我们处理get方法");
return name;
}
public void setName(String name) {
log.info("我们处理set方法");
System.out.println("我们处理set方法");
this.name = name;
}
public String getTitle() {
log.info("我们处理get方法");
System.out.println("我们处理get方法");
return title;
}
public void setTitle(String title) {
log.info("我们处理set方法");
System.out.println("我们处理set方法");
this.title = title;
}
}
BeforeAdvicetest.java
package com.studyspring.ch3;
import java.lang.reflect.Method;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.aop.MethodBeforeAdvice;
import org.springframework.aop.framework.ProxyFactory;
public class BeforeAdvicetest implements MethodBeforeAdvice{
/**
* @param args
*/
private Log log=LogFactory.getLog(BeforeAdvicetest.class);
public void before(Method method, Object[] arg, Object target) throws Throwable {
log.info("Now we use before advice");
System.out.println("Now we use before advice");
}
}