public class Book { public void add(){ System.out.println("Book里面的add方法"); } }
public class MyBook { public void before1(){ System.out.println("MyBook中的before方法"); } }
<bean id="book" class="com.xiaobo.aop.Book"></bean> <bean id="myBook" class="com.xiaobo.aop.MyBook"></bean> <!--配置aop操做--> <aop:config> <!--配置切入点--> <aop:pointcut id="point1" expression="execution(* com.xiaobo.aop.Book.*())" ></aop:pointcut> <!--配置切面 把加强用到方法后面 --> <aop:aspect ref="myBook"> <!--配置加强类,method为加强类中哪一个方法为前置--> <aop:before method="before1" pointcut-ref="point1"></aop:before> </aop:aspect> <aop:aspect ref="myBook"> <!--配置加强类,method为加强类中哪一个方法为前置--> <aop:after method="before1" pointcut-ref="point1"></aop:after> </aop:aspect> </aop:config>
@Test public void testaop(){ ApplicationContext context=new ClassPathXmlApplicationContext("bean2.xml"); Book book = (Book) context.getBean("book"); book.add(); }
<!--配置对象--> <bean id="book" class="com.xiaobo.aop.Book"></bean> <bean id="myBook" class="com.xiaobo.aop.MyBook"></bean> <!--一句话自动开启注解aop操做--> <aop:aspectj-autoproxy></aop:aspectj-autoproxy>
//定义切面 @Aspect public class Book { //定义要以特定加强的方式的加强方法,book先执行 @Before(value = "execution(* com.xiaobo.aop.MyBook.*(..))") public void add(){ System.out.println("Book里面的add方法"); } }
public class MyBook { public void before1(){ System.out.println("MyBook中的before方法"); } }
@Test public void testaop2(){ ApplicationContext context=new ClassPathXmlApplicationContext("bean3.xml"); MyBook book = (MyBook) context.getBean("myBook"); book.before1(); }