之前的文章:http://47.93.183.36/article/876.html 使用Sprint的API(即要添加的通知功能都实现于Spring的接口)实现了AOP切面编程,也可以使用自定义的类来实现,我们可以写一个独立的CLASS类和一些方法,然后通过在applicationContext IOC容器配置中自定义切面 ,在这个切面中自定义我们的切入点并ref相关的方法从而实现切面编程。同样我们编写一个interface Printers和Computer类,还有一个自定义的横切关注点(切面,即自定义类)。代码如下:本文地址:http://8408.cn/article/878.html,未经许可,不得转载.
//interface package aspect; public interface Printers { public void print(); } //interface的实现类 package aspect; public class Computer implements Printers{ public void print() { System.out.println("打印机执行打印"); } } //自定义的横切关注点类 package aspect; public class PrintReady { public void ready() { System.out.println("准备墨水和纸"); } public void clear() { System.out.println("整理桌面"); } }本文地址:http://8408.cn/article/878.html,未经许可,不得转载.
如上,我们编写了一个计算类,其有打印的方法,而我们想在打印机执行打印前后添加点其它功能,比如打印执行前准备墨水和纸,打印后整理桌面。注意看我们的横切关注点类PrintReady没有继承任何的Spring类或者接口。然后我们开始编辑applicationContext.xml配置,以及如下:本文地址:http://8408.cn/article/878.html,未经许可,不得转载.
#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" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/aop https://www.springframework.org/schema/aop/spring-aop.xsd"> <aop:aspectj-autoproxy /> <bean id="computer" class="aspect.Computer" /> <bean id="printready" class="aspect.PrintReady" /> <aop:config> <!-- 自定义切面 --> <aop:aspect ref="printready"> <!-- 切点 --> <aop:pointcut expression="execution(* aspect.Computer.*(..))" id="doprint"/> <aop:before method="ready" pointcut-ref="doprint" /> <aop:after method="clear" pointcut-ref="doprint"/> </aop:aspect> </aop:config> </beans>本文地址:http://8408.cn/article/878.html,未经许可,不得转载.
测试类User的代码及运行结果如下:本文地址:http://8408.cn/article/878.html,未经许可,不得转载.
package com.kermit.dotest; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import aspect.Printers; public class User { public static void main(String[] args) { ApplicationContext context = new ClassPathXmlApplicationContext("ApplicationContext.xml"); Printers computer = (Printers)context.getBean("computer"); computer.print(); } } //运行结果 准备墨水和纸 打印机执行打印 整理桌面本文地址:http://8408.cn/article/878.html,未经许可,不得转载.
本文地址:http://8408.cn/article/878.html 未经许可,不得转载. 手机访问本页请扫描右下方二维码.
手机扫码直接打开本页面 |