PostSharp AOP编程:2.PostSharp的OnMethodBoundaryAspect类基本组成

简介:

    首先我们下载PostSharp 2.1.5.1,选择精简版本(价格为0美元)下订单地址是:http://www.sharpcrafters.com/purchase/compare,。我们需要注册一个OpenID,然后购买下来,它会发送一个精简版的License到你的注册邮箱中。点击PostSharp2.1.5.1安装文件输入Lincense即可完成。

     PostSharp是编译时将IL语言静态注入程序中,在免费版本中我们能够使用PostSharp对方法、字段和属性进行AOP截取数据而不能对事件进行AOP截取。下面我们来看看针对方法、字段和属性的AOP处理类:

     OnMethodBoundaryAspect

     继承于此类的特性A将围绕整个方法B进行静态注入式的处理,这个特性A可以重载覆写OnMethodBoundaryAspect类的OnEntry()、OnSuccess()、OnException()、OnExit()方法。如下代码:

 

 
  1. [Serializable
  2. public sealed class LogsAttribute : OnMethodBoundaryAspect 
  3.     //进入函数时 
  4.     public override void OnEntry(MethodExecutionArgs args) 
  5.     { 
  6.         base.OnEntry(args); 
  7.     } 
  8.     //函数执行成功时 
  9.     public override void OnSuccess(MethodExecutionArgs args) 
  10.     { 
  11.         base.OnSuccess(args); 
  12.     } 
  13.     //发生异常时 
  14.     public override void OnException(MethodExecutionArgs args) 
  15.     { 
  16.         base.OnException(args); 
  17.     } 
  18.     //退出函数时 
  19.     public override void OnExit(MethodExecutionArgs args) 
  20.     { 
  21.         base.OnExit(args); 
  22.     } 

       其覆写函数时的运行顺序和结果如下代码所示:

 

 
  1. int MethodA(object arg0, int arg1) 
  2.     //函数进入时添加OnEntry()方法 
  3.     OnEntry(); 
  4.     try 
  5.     { 
  6.         // 函数在此运行完毕 
  7.         //如果成功则继续运行OnSuccess()方法 
  8.         OnSuccess(); 
  9.         return returnValue; 
  10.     } 
  11.     catch (Exception e) 
  12.     { 
  13.         //如果函数执行有问题,则运行OnException()方法 
  14.         OnException(); 
  15.     } 
  16.     finally 
  17.     { 
  18.         //最后执行OnExit()方法 
  19.         OnExit(); 
  20.     } 

      所以我们可以通过OnMethodBoundaryAspect编写特性去围绕方法截取数据,并且处理方法内部数据。如异常处理特性、日志记录特性、缓存记录特性和权限管理特性。



本文转自程兴亮 51CTO博客,原文链接:http://blog.51cto.com/chengxingliang/827077

相关文章
|
2月前
|
Java 数据库连接 应用服务中间件
Spring5源码(39)-Aop事物管理简介及编程式事物实现
Spring5源码(39)-Aop事物管理简介及编程式事物实现
24 0
|
7月前
|
XML 缓存 监控
切面的魔力:解密Spring AOP 面向切面编程
切面的魔力:解密Spring AOP 面向切面编程
29 0
|
6月前
|
前端开发 Java 数据库连接
Spring Aop:面向切面编程
Spring Aop:面向切面编程
35 0
|
3月前
|
XML Java 数据格式
Spring 的AOP 简介,面向切面编程AOP
Spring 的AOP 简介,面向切面编程AOP
63 0
|
8月前
|
XML Java Maven
Spring AOP 面向切面编程(上)
Spring AOP 面向切面编程(上)
|
4月前
|
Kotlin
aop注解在整个类生效
aop注解在整个类生效
35 0
|
5月前
|
Java Maven Spring
AOP切面编程
AOP(Aspect Oriented Programming)是一种设计思想,是软件设计领域中的面向切面编程,它是面向对象编程的一种补充和完善,它以通过预编译方式和运行期动态代理方式实现在不修改源代码的情况下给程序动态统一添加额外功能的一种技术。
51 0
|
6月前
|
XML Cloud Native Java
Spring AOP使用指南: 强大的面向切面编程技术
Spring AOP使用指南: 强大的面向切面编程技术
45 0
|
6月前
|
监控 Cloud Native Java
Spring AOP:面向切面编程在实际项目中的应用
Spring AOP:面向切面编程在实际项目中的应用
73 0
|
7月前
|
Java 数据安全/隐私保护 Spring
Spring AOP(面向切面编程)
AOP能够将那些与业务无关,却为业务模块所共同调用的逻辑或责任(例如事务处理、日志管理、权限控制等)封装起来,便于减少系统的重复代码,降低模块间的耦合度,并有利于未来的可拓展性和可维护性。
33 0