Spring AOP中文教程

上传人:ning****hua 文档编号:59472132 上传时间:2022-03-03 格式:DOC 页数:6 大小:46.50KB
返回 下载 相关 举报
Spring AOP中文教程_第1页
第1页 / 共6页
Spring AOP中文教程_第2页
第2页 / 共6页
Spring AOP中文教程_第3页
第3页 / 共6页
点击查看更多>>
资源描述
java教程:Spring AOP中文教程AOP正在成为软件开发的下一个圣杯。使用AOP,你可以将处理aspect的代码注入主程序,通常主程序的主要目的并不在于处理这些aspect。AOP可以防止代码混乱。 为了理解AOP如何做到这点,考虑一下记日志的工作。日志本身不太可能是你开发的主程序的主要任务。如果能将“不可见的”、通用的日志代码注入主程序中,那该多好啊。AOP可以帮助你做到。Spring framework是很有前途的AOP技术。作为一种非侵略性的,轻型的AOP framework,你无需使用预编译器或其他的元标签,便可以在Java程序中使用它。这意味着开发团队里只需一人要对付AOP framework,其他人还是象往常一样编程。 AOP是很多直觉难以理解的术语的根源。幸运的是,你只要理解三个概念,就可以编写AOP模块。这三个概念是:advice,pointcut和 advisor。advice是你想向别的程序内部不同的地方注入的代码。pointcut定义了需要注入advice的位置,通常是某个特定的类的一个 public方法。advisor是pointcut和advice的装配器,是将advice注入主程序中预定义位置的代码。 既然我们知道了需要使用advisor向主要代码中注入“不可见的”advice,让我们实现一个Spring AOP的例子。在这个例子中,我们将实现一个before advice,这意味着advice的代码在被调用的public方法开始前被执行。以下是这个before advice的实现代码:代码:package pany.springaop.test;import java.lang.reflect.Method;import org.springframework.aop.MethodBeforeAdvice;public class TestBeforeAdvice implements MethodBeforeAdvice public void before(Method m, Object args, Object target) throws Throwable System.out.println(Hello world! (by + this.getClass().getName() + ); 接口MethodBeforeAdvice只有一个方法before需要实现,它定义了advice的实现。before方法共用三个参数,它们提供了相当丰富的信息。参数Method m是advice开始后执行的方法。方法名称可以用作判断是否执行代码的条件。Object args是传给被调用的public方法的参数数组。当需要记日志时,参数args和被执行方法的名称,都是非常有用的信息。你也可以改变传给m的参数,但要小心使用这个功能;编写最初主程序的程序员并不知道主程序可能会和传入参数的发生冲突。Object target是执行方法m对象的引用。在下面的BeanImpl类中,每个public方法调用前,都会执行advice:代码:package pany.springaop.test;public class BeanImpl implements Bean public void theMethod() System.out.println(this.getClass().getName() + . + new Exception().getStackTrace()0.getMethodName() + () + says HELLO!); 类BeanImpl实现了下面的接口Bean:代码:package pany.springaop.test;public interface Bean public void theMethod();虽然不是必须使用接口,但面向接口而不是面向实现编程是良好的编程实践,Spring也鼓励这样做。pointcut和advice通过配置文件来实现,因此,接下来你只需编写主方法的Java代码:代码:package pany.springaop.test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.FileSystemXmlApplicationContext;public class Main public static void main(String args) /Read the configuration file ApplicationContext ctx = new FileSystemXmlApplicationContext(springconfig.xml); /Instantiate an object Bean x = (Bean) ctx.getBean(bean); /Execute the public method of the bean (the test) x.theMethod(); 我们从读入和处理配置文件开始,接下来马上要创建它。这个配置文件将作为粘合程序不同部分的“胶水”。读入和处理配置文件后,我们会得到一个创建工厂ctx。任何一个Spring管理的对象都必须通过这个工厂来创建。对象通过工厂创建后便可正常使用。仅仅用配置文件便可把程序的每一部分组装起来。代码: pany.springaop.test.Bean theAdvisor com.company.springaop.test.Bean.theMethod 四个bean定义的次序并不重要。我们现在有了一个advice,一个包含了正则表达式pointcut的advisor,一个主程序类和一个配置好的接口,通过工厂ctx,这个接口返回自己本身实现的一个引用。 BeanImpl和TestBeforeAdvice都是直接配置。我们用一个唯一的ID创建一个bean元素,并指定了一个实现类。这就是全部的工作。 advisor通过Spring framework提供的一个RegexMethodPointcutAdvisor类来实现。我们用advisor的一个属性来指定它所需的 advice-bean。第二个属性则用正则表达式定义了pointcut,确保良好的性能和易读性。 最后配置的是bean,它可以通过一个工厂来创建。bean的定义看起来比实际上要复杂。bean是ProxyFactoryBean的一个实现,它是Spring framework的一部分。这个bean的行为通过一下的三个属性来定义: * 属性proxyInterface定义了接口类。 * 属性target指向本地配置的一个bean,这个bean返回一个接口的实现。 * 属性interceptorNames是唯一允许定义一个值列表的属性。这个列表包含所有需要在beanTarget上执行的advisor。注意,advisor列表的次序是非常重要的。Spring工具 虽然你可以手工修改Ant构建脚本,但使用SpringUI(译注:SpringUI现在是Spring framework的一部分,并改名为spring-ide),使用Spring AOP变得很简单,只要点点鼠标即可。你可以把SpringUI安装成Eclipse的一个plug-in。然后,你只需在你的project上右击鼠标,并选择“add Spring Project Nature”。在project属性中,你可以在“Spring Project”下添加Spring配置文件。在编译前把下面的类库加入project:aopalliance.jar,commons- logging.jar,jakarta-oro-2.0.7.jar和spring.jar。运行程序时你会看到下面的信息:. (logging information)Hello world! (by pany.springaop.test.TestBeforeAdvice)pany.springaop.test.BeanImpl.theMethod() says HELLO!优点和缺点 Spring比起其他的framework更有优势,因为除了AOP以外,它提供了更多别的功能。作为一个轻型framework,它在J2EE 不同的部分都可以发挥作用。因此,即使不想使用Spring AOP,你可能还是想使用Spring。另一个优点是,Spring并不要求开发团队所有的人员都会用它。学习Spring应该从Spring reference的第一页开始。读了本文后,你应该可以更好地理解Spring reference了。Spring唯一的缺点是缺乏更多的文档,但它的mailing list是个很好的补充,而且会不断地出现更多的文档。本文来自网络,请不要使用盗版,谢谢阅读 版权所有 2010本文来自网络,请不要使用盗版,谢谢阅读 版权所有 201 我爱朱丹老婆本文来自网络,请不要使用盗版,谢谢阅读 版权所有 2010本文来自网络,请不要使用盗版,谢谢阅读 版权所有 我爱朱丹老婆本文来自网络,请不要使用盗版,谢谢阅读 版权所有 2010本文来自网络,请不要使用盗版,谢谢阅读 版权所有 我爱朱丹老婆本文来自网络,请不要使用盗版,谢谢阅读 版权所有 2010本文来自网络,请不要使用盗版,谢谢阅读 版权所有 2010本文来自网络,请不要使用盗版,谢谢阅读 版权所有 我爱朱丹老婆本文来自网络,请不要使用盗版,谢谢阅读 版权所有 2010本文来自网络,请不要使用盗版,谢谢阅读 版权所有 2010本文来自网络,请不要使用盗版,谢谢阅读 版权所有 2010本文来自网络,请不要使用盗版,谢谢阅读 版权所有 我爱朱丹老婆本文来自网络,请不要使用盗版,谢谢阅读 版权所有 2010本文来自网络,请不要使用盗版,谢谢阅读 版权所有 2010本文来自网络,请不要使用盗版,谢谢阅读 版权所有 我爱朱丹老婆本文来自网络,请不要使用盗版,谢谢阅读 版权所有 2010本文来自网络,请不要使用盗版,谢谢阅读 版权所有 我爱朱丹老婆本文来自网络,请不要使用盗版,谢谢阅读 版权所有 2010本文来自网络,请不要使用盗版,谢谢阅读 版权所有 我爱朱丹老婆本文来自网络,请不要使用盗版,谢谢阅读 版权所有 2010本文来自网络,请不要使用盗版,谢谢阅读 版权所有 我爱朱丹老婆 我爱朱丹老婆 网络赚钱QQ群:40635958
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业管理 > 营销创新


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!