基于aspectj的aop操作

来源:互联网 发布:a5淘宝客 编辑:程序博客网 时间:2024/06/14 01:57

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.xsd          http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd          http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">  <!--1. 配置对象 --><bean id="book" class="webdemo.Book"></bean><bean id="mybook" class="webdemo.MyBook"></bean><!-- 2.配置aop操作 --><aop:config><!-- 2.1配置切入点 --><aop:pointcut expression="execution(* webdemo.Book.*(..))" id="pointcut1"/><!-- 2.2配置切面 --><aop:aspect ref="mybook"><aop:before method="before" pointcut-ref="pointcut1"/></aop:aspect></aop:config></beans>

创建代理类和被代理类

package webdemo;public class Book {public void demo1(){System.out.println("haha...");}}

package webdemo;public class  MyBook{public void before(){System.out.println("前置通知!");}}

创建测试类:

package webdemo;import javax.transaction.Transactional;import org.junit.Test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;public class TestDemo {    @Testpublic void test2(){    ApplicationContext ap=new ClassPathXmlApplicationContext("applicationContext.xml");    Book book=(Book) ap.getBean("book");    book.demo1();}}

测试输出:

前置通知!
haha...