1-导入apectJware-jar和spring-aop.jar
2-编写Teacher接口和Teacher实现类
public interface Teacher {
//上课
public void teach();
}
public class TeacherImpl implements Teacher {
@Override
public void teach() {
System.out.println("上课");
}
}
3-编写切面类
//切面类
public class MyAspect {
//点名
public void callName(){
System.out.println("点名");
}
//收发作业
public void collectHomework(){
System.out.println("收发作业");
}
}
4-编写配置文件
<?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.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd"
>
<!--目标类.被代理类的bean-->
<bean id="teacher" class="p313.aop.xml.TeacherImpl"/>
<!--切面类的bean-->
<bean id="myAspect" class="p313.aop.xml.MyAspect"/>
<!--aop的编程配置-->
<aop:config>
<aop:aspect ref="myAspect">
<!--在连接点上选择哪些点为切入点?
标准?
标准1
execution(* xml.*.*(..)) 表示 指定包xml 所有类 所有方法 对方法入参没有要求 对返回类型也没有要求
标准2
execution(* xml.Teacher.teach(..))
标准3
p313.aop.xml
-->
<aop:pointcut id="myPointCut" expression="execution(* p313.aop.xml.*.*(..))"/>
<!--aop:before 前置增强-->
<aop:before method="callName" pointcut-ref="myPointCut"/>
<!--aop:after 最终增强-->
<aop:after method="callName" pointcut-ref="myPointCut"/>
</aop:aspect>
</aop:config>
</beans>
5-测试
public class MyTest {
public static void main(String[] args) {
ApplicationContext applicationContext=
new ClassPathXmlApplicationContext("p313/aop/xml/applicationContext.xml");
Teacher teacher= (Teacher) applicationContext.getBean("teacher");
teacher.teach();
}
}