AspectJ注解方式实现AOP

来源:互联网 发布:疯狗软件 编辑:程序博客网 时间:2024/06/01 09:47

以下均在lin包中
其核心是利用代理模式,在执行目标方法时,通过配置切面类,会执行相应的方法

public interface  Teacher{    public void perform();}

接口实现类

//实现类,配置为组件@Component("serviceImpl")public class Instrumentalist implements Teacher{    public void perform() {        System.out.println("执行");    }}

切面类:注意execution的配置

@Component@Aspectpublic class Student {    //切入点配置    @Pointcut("execution(* lin.Instrumentalist.perform(..))")    public void performance(){}    @Before("performance()")    public void takeSeats(){        System.out.println("切入前");    }    @Before("performance()")    public void turnOffCellphones(){        System.out.println("回调");    }    @AfterReturning("performance()")    public void applaud(){        System.out.println("暂停时");    }    @AfterThrowing("performance()")    public void demandRefund(){        System.out.println("异常");    }    @After("performance()")    public void after(){        System.out.println("最终执行");    }}

applicationContext.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"    xmlns:context="http://www.springframework.org/schema/context"    xsi:schemaLocation="http://www.springframework.org/schema/beans    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd     http://www.springframework.org/schema/aop     http://www.springframework.org/schema/aop/spring-aop-3.0.xsd    http://www.springframework.org/schema/context    http://www.springframework.org/schema/context/spring-context-3.0.xsd">     <context:annotation-config></context:annotation-config>    <context:component-scan base-package="lin"></context:component-scan>    <aop:aspectj-autoproxy></aop:aspectj-autoproxy></beans>
测试类public class Test {     public static void main(String[] args) {            ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");                      Teacher performer = (Teacher)ctx.getBean("serviceImpl");            performer.perform();        }}
原创粉丝点击