本方式实现主要在于配置
包:
aspectjrt.jar
asm-2.2.3.jar
asm-commons-2.2.3.jar
asm-util-2.2.3.jar
spring.jar
cglib-nodep-2.1_3.jar
log4j-1.2.11.jar
commons-logging-1.0.4.jar
配置:AOP.xml
<?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-2.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-2.0.xsd">
<aop:config proxy-target-class="true">
<aop:aspect ref="aspect">
<aop:before
pointcut="target(aopimp5.WaiterImp) and execution(* sayHello(..))"
method="pointCutFun" />
</aop:aspect>
</aop:config>
<bean id="aspect" class="aopimp5.TestAspect" />
<bean id="waiter" class="aopimp5.WaiterImp" />
</beans>
1.
public interface Waiter {
void sayHello(String str);
}
2.
public class WaiterImp implements Waiter {
public void sayHello(String str) {
System.out.println("+++++++++++ Hello "+str+" ++++++++++++=");
}
}
3.
public class TestAspect {
public void pointCutFun(){
System.out.println("====== this is point cut =============");
}
}
4.
public class Main {
public static void main(String[] args) {
ApplicationContext ctx = new ClassPathXmlApplicationContext("/AOP.xml"); //只能用ApplicationContext方式
Waiter w = (Waiter)ctx.getBean("waiter");
w.sayHello("Bill");
}
}