Spring 1.2和2.0的简单AOP例子 - 编程入门网
Spring 1.2和2.0的简单AOP例子时间:2011-09-1410.3 开发Spring 1.2 AOP应用 本节将会给大家展示一个恐怖的例子,FBI特务人员已经介入了您的生活,您所做的一切都在他们的监视之中,包括聊QQ,泡MM,这在现实生活中是真实存在的,为了民众的安全和稳定,对嫌疑犯进行必要的监控是必要的。 注意:本章虽然介绍了多种AOP实现方式,然而,在实际项目中只要使用一种就可以达到目的了(因为Spring的AOP存在多种写法,完全掌握还是挺复杂),其它方式仅供参考,千万不要像孔乙己一样,研究“茴”字的N种写法,这样就脱离了学习技术的初衷了:学习是为了解决问题,不是为了炫耀自己。另外,如果在项目中滥用AOP的后果就是系统的执行效率大大降低,甚至配置不当会导致死循环。记住一个真理:系统越复杂,效率越低,出故障的可能越大。另外一条建议:千万不要用AOP在服务器上记录日志,或者在服务器上打印不必要的调试信息,那样对系统只能有害无益,日志输出是单线程操作,切记。做项目,一般来说是功能越少越好。高手更多的时候只能做出破坏力大,不易维护的垃圾系统。 10.3.1 开发Man对象 这个项目非常简单,仿照上节内容,创建项目并添加Spring开发功能,不同的是添加library的时候要把Spring 2.0 AOP Libraries加入进来。因为Spring 2.0的类库是兼容1.2的,所以这里就用2.0了。项目名为Spring1_2AOP。接下来我们要创建一个自由人的对象,他有聊QQ和泡MM这两个方法,还有一个姓名属性。好了,先建立这个类: /** * 具有聊QQ和泡MM两个行为的人对象,还有一个用户名属性。* @author BeanSoft*/public class Man { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } public void qq() { System.out.println("我在聊QQ"); } public void mm() { System.out.println("我在泡MM"); } } 清单10.6 Man类源码 Spring 1.2和2.0的简单AOP例子(2)时间:2011-09-1410.3.2 开发前置通知(Before advice)对象:FBI 首先贴一段Spring文档中关于Before advice的介绍: 前置通知(Before advice): 在某连接点(join point)之前执行的通知,但这个通知不能阻止连接点前的执行(除非它抛出一个异常)。 说通俗点就是写一个如何处理监视结果的对象,可以把监视结果打印出来以作为必要的时候的呈堂证物,或者派探员立即跟踪,但是这个过程只能在你进行某活动前进行,否则就失去监视的意义了,这个对象更像“诸葛亮”。详细的了解这个类需要学习JDK里面关于反射部分的内容,下面是这个类的代码: import java.lang.reflect.Method; import org.springframework.aop.MethodBeforeAdvice; /*** 联邦调查局的探员将您的所有行动都记录在案。 * @author BeanSoft*/public class FBI implements MethodBeforeAdvice { public void before(Method method, Object[] args, Object target) throws Throwable { Man man = (Man)target; System.err.println("FBI 发现" + man.getName() + "正在进行 " + method.getName() + " 活动。"); } } 清单10.7 FBI类源码 10.3.3 装配拦截器和Bean 最后要做的,就是创建一个平民对象,注意不是自由人哦,因为平民是随时处于FBI的监视之下的。这个对象本质上是类ProxyFactoryBean的一个示例,这个类位于包org.springframework.ao |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |