目录结构:
上代码:
package aop;
public interface IExam {
public abstract void test4();
public abstract void test6();
}
package aop;
public class QiangShou implements IExam{
public void test4() {
System.out.println("保证通过四级");
}
public void test6() {
System.out.println("保证通过六级");
}
}
package aop;
public class After {
public void af(){
System.out.println("给你证书");
}
}
package aop;
public class Before {
public void bf(){
System.out.println("请给我代理费");
}
}
package aop;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class TestAOP {
public static void main(String[] args) {
// TODO Auto-generated method stub
/*
IExam cbb=new QiangShou();
Proxy46 proxy=new Proxy46();
proxy.setQs(cbb);
proxy.test4();
*/
ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
IExam exam=context.getBean("target",IExam.class);
exam.test6();
}
}
<?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:p="http://www.springframework.org/schema/p"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd">
<!-- 配目标 -->
<bean id="target" class="aop.QiangShou"></bean>
<!-- 配通知 -->
<bean id="bfadvice" class="aop.Before"></bean>
<bean id="afadvice" class="aop.After"></bean>
<!-- 配切面(aspect) -->
<aop:config>
<!-- 切入点 -->
<aop:pointcut expression="execution(* aop.QiangShou.*6(..))" id="mypoint"/>
<!-- 引用通知 -->
<aop:aspect ref="bfadvice">
<aop:before method="bf" pointcut-ref="mypoint"/>
</aop:aspect>
<aop:aspect ref="afadvice">
<aop:after method="af" pointcut-ref="mypoint"/>
</aop:aspect>
</aop:config>
</beans>