AI智能
改变未来

基于xml配置文件的声明式AspectJ

1-导入apectJware-jar和spring-aop.jar

2-编写Teacher接口和Teacher实现类

public interface Teacher {//上课public void teach();}public class TeacherImpl implements Teacher {@Overridepublic 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/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/aophttp://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\"><!--在连接点上选择哪些点为切入点?标准?标准1execution(* xml.*.*(..))  表示 指定包xml 所有类 所有方法 对方法入参没有要求 对返回类型也没有要求标准2execution(* xml.Teacher.teach(..))标准3p313.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();}}
赞(0) 打赏
未经允许不得转载:爱站程序员基地 » 基于xml配置文件的声明式AspectJ