浅析Spring。net中的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 Oriented Programming的缩写,意为:面向切面编程(也叫面向方面),可以通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加 功能的一种技术。AOP实际是GoF设计模式的延续,设计模式孜孜不倦追求的是调用者和被调用者之间的解耦,AOP可以说也是这种目标的一种实现。 主要的功能是:日志记录,性能统计,安全控制,事务处理,异常处理等等。 主要的意图是:将日志记录,性能统计,安全控制,事务处理,异常处理等代码从业务逻辑代码中划分出来,通过对这些行为的分离,我们希望可以将它们独立到非指导业务逻辑的方法中,进而改变这些行为的时候不影响业务逻辑的代码。 可以通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能的一种技术。AOP实际是GoF设计模式的延续,设计模式孜孜不倦追求的是调用者和被调用者之间的解耦,AOP可以说也是这种目标的一种实现。 在Spring中提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务(例 如审计(auditing)和事务(transaction)管理)进行内聚性的开发。应用对象只实现它们应该做的——完成业务逻辑——仅此而已。它们并 不负责(甚至是意识)其它的系统级关注点,例如日志或事务支持。 ????????? 切面(Aspect) 切面是你要实现的交叉功能。它是应用系统模块化的一个切面或领域。切面的最常见(虽然简单)例子是日志记录。日志记录在系统中到处需要用到,利用继承来重用日志模块不适合。然而,你可以创建一个日志记录切面,并且使用AOP在系统中应用。 连接点(Joinpoint) 连接点是应用程序执行过程中插入切面的地点。这个地点可以是方法调用,异常抛出,或者甚至是要修改的字段。切面代码在这些地方插入到你的应用流程中,添加新的行为。 通知(Advice) 通知切面的实际实现。它通知应用系统新的行为。在日志例子中,日志通知包含了实现实际日志功能的代码,如向日志文件写日志。通知在连接点插入到应用系统中。 切入点(Pointcut) 切入点定义了通知应该应用在哪些连接点。通知可以应用到AOP框架支持的任何连接点。当然,你并不希望把所有切面应用到所有可能的连接点上。切入点让你指定通知应用到什么地方。通常通过指定类名和方法名,或者匹配类名和方法名式样的正则表达式来指定切入点。一些AOP框架允许动态创建切入点,在运行时根据条件决定是否应用切面,如方法参数值。 引入(Introduction) 引入允许你为已存在类添加新方法和属性。例如,你可以创建一个稽查通知来记录对象的最后修改时间。只要用一个方法setLastMofified(Date)以及一个保存这个状态的变量。可以在不改变已存在类的情况下将这个引入,给他们新的行为和状态。 目标对象(Target) 目标对象是被通知对象。它既可以是你编写的类也可以是你要添加制定行为的第三方类。如果没有AOP,这个类就必须要包含它的主要逻辑以及其他交叉业务逻辑。有了AOP,目标对象就可以全身心地关注主要业务,忘记应用其上的通知。 代理(Proxy) 代理是将通知应用到目标对象后创建的对象。对于客户对象来说,目标对象(应用AOP之前的对象)和代理对象(应用AOP之后的对象)是一样的。也就是,应用系统的其他部分不用为了支持代理对象而改变。 织入 (Weaving) 织入是将切面应用到目标对象从而创建一个新的代理对象的过程。切面在指定接入点被织入到目标对象中。 二. 几个重要接口? 用于找到用于通知的相关的类型和方法 View?Code? ? ?public?interface?IPointcut ? ? ? ?{ ? ? ? ?????ITypeFilter?TypeFilter?{?get;?} ? ? ? ?????IMethodMatcher?MethodMatcher?{?get;?} ? ? ? ?}? 用于匹配相关类型 View?Code? ? ?public?interface?ITypeFilter ? ? ? ?{ ? ? ? ?????bool?Matches(Type?type); ? ? ? ?} ? ? ? ?public?interface?IMethodMatcher ? ? ? ?{ ? ? ? ?????bool?IsRuntime?{?get;?} ? ? ? ?????bool?Matches(MethodInfo?method,?Type?targetType); ? ? ? ?????bool?Matches(MethodInfo?method,?Type?targetType,?object[]?args); ? ? ?

文档评论(0)

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

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

1亿VIP精品文档

相关文档