Spring AOP中文教程.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
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; publ

文档评论(0)

yan666888 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档