spring.net AOP通知类型
上篇介绍了spring.net AOP的基本实现,其中有说到通知类型,首先在这里补充解释一下。最后出一个异常通知的实例,因为他的实现和别的通知有些不一样。
1、拦截环绕通知:在Spring中最基础的通知类型。
  public class LogAdvice : IMethodInterceptor
    {
        private void Log()
        {
            Console.WriteLine("保存数据记日志");
        }
        public object Invoke(IMethodInvocation invocation)
        {
            //Log();
            object obj = invocation.Proceed();
            Log();
            return obj;
        }
    }
2、前置通知,可以用拦截环绕通知代替,效果相当于在拦截环绕通知中,将Log()放在object obj = invocation.Proceed()前面。
    public class LogAdvice : IAfterReturningAdvice
    {
        private void Log()
        {
            Console.WriteLine("保存数据记日志");
        }
        public void AfterReturning(object returnValue, System.Reflection.MethodInfo method, object[] args, object target)
        {
            Log();
        }
    }
3、后置通知,可以用拦截环绕通知代替,效果相当于在拦截环绕通知中,将Log()放在object obj = invocation.Proceed()后面。
    public class LogAdvice : IMethodBeforeAdvice
    {
        private void Log()
        {
            Console.WriteLine("保存数据记日志2");
        }
        public void Before(System.Reflection.MethodInfo method, object[] args, object target)
        {
            Log();
        }
    }
4、异常通知:如果连接点抛出异常,异常通知(throws advice)将在连接点返回后被调用。需要继承接口IThrowsAdvice,这个接口不包含任何方法,但是我们必须要实现afterThrowing方法。
afterThrowing(Method m, Object[] args, Object target, ServletException ex)
只有最后一个参数是必须的。根据异常通知方法对方法及参数的需求,方法的签名可以有一个或者四个参数。
    public class Advice : IThrowsAdvice
    {
        public Advice() { }
        public void AfterThrowing(Exception exception)
        {
            Console.Error.WriteLine("记录错误日志:" + exception.Message);
            Console.WriteLine();
        }
    }
异常通知并不会直接处理异常,所以我们需要自己来捕获异常,并处理。
  class Program
    {
        static void Main(string[] args)
        {
            IApplicationContext context = new XmlApplicationContext(@"XMLFile1.xml");
            IDataService service = (IDataService)context.GetObject("DataService");
            try
            {
                service.SaveData();
            }
            catch
            {
                //dosomething
            }
            Console.Read();
        }
    }                    
异常通知不同的地方在于,接口中没有任何方法,必须根据异常通知方法来自己实现,另外别忘了处理掉异常。
5、引入通知,这个还没去了解,有兴趣的同学可以自己百度一下。
spring.net AOP通知类型的更多相关文章
- AOP通知类型
		
AOP通知类型 前置通知 在目标方法执行之前进行操作 后置通知 在目标方法执行之后 进行操作 环绕通知 在目标方法执行之前 和之后进行操作 public Object arount() 异常抛出通知 ...
 - Spring基础——AOP通知
		
spring(AOP通知) 切面 切面是封装通用业务逻辑的组件,可以作用到其他组件上.是spring组件中的某个方法.无返回类型.参数类型与通知类型有关.一个切面 开启数据库 关闭数据库 开启事务 检 ...
 - 分享知识-快乐自己:Spring切入点的表达式和通知类型
		
1.切入点的表达式 表达式格式: execution([修饰符] 返回值类型 包名.类名.方法名(参数)) 其他的代替: <!-- 完全指定一个方法 --> <!-- <aop ...
 - 7.Spring切入点的表达式和通知类型
		
1.切入点的表达式 表达式格式: execution([修饰符] 返回值类型 包名.类名.方法名(参数)) 其他的代替: <!-- 完全指定一个方法 --> <!-- <aop ...
 - Java开发学习(十六)----AOP切入点表达式及五种通知类型解析
		
一.AOP切入点表达式 对于AOP中切入点表达式,总共有三个大的方面,分别是语法格式.通配符和书写技巧. 1.1 语法格式 首先我们先要明确两个概念: 切入点:要进行增强的方法 切入点表达式:要进行增 ...
 - AOP 与 Spring中AOP使用(下)
		
AOP通知类型 前置通知 在目标方法执行之前进行操作 UserDao.java public class UserDao { public void add(){ System.out.println ...
 - spring的aop编程(半自动、全自动)
		
1.spring的半自动代理(从spring中获取代理对象) (1)spring中的通知类型 spring中aop的通知类型有五种: 前置:在目标方法执行前实施加强 后置:在目标方法执行后实施加强 环 ...
 - 实在是秒啊,我还从来没见过把Spring之AOP讲的这么通俗易懂的,安排!
		
Spring之AOP 什么是AOP? AOP 为 Aspect Oriented Programming 的缩写,意思为面向切面编程,是通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术. ...
 - Spring AOP使用整理:各种通知类型的介绍
		
2.PersonImpl类的源码 public class PersonImpl implements Person { private String name; private int age; p ...
 
随机推荐
- 数据持久化之SP的优化—送工具类
			
第一点:sp存储的是键值对 getSharedPreferences 第一个參数是你保存文件的名字,第个是保存的模式一般能够默觉得0 先看普通 使用SP 存储String类型字符串吧 SharedPr ...
 - Set Matrix Zeroes -- LeetCode
			
原题链接: http://oj.leetcode.com/problems/set-matrix-zeroes/ 这是一个矩阵操作的题目,目标非常明白,就是假设矩阵假设有元素为0,就把相应的行和列上面 ...
 - IOS开发-Swift新语言初见
			
Safe Swift pairs increased type safety with type inference, restricts direct access to pointers, and ...
 - 发现新大陆:一个最简单的破解SSL加密网络数据包的方法
			
1. 简介 相信能访问到这篇文章的同行基本上都会用过流行的网络抓包工具WireShark,用它来抓取相应的网络数据包来进行问题分析或者其他你懂的之类的事情. 一般来说,我们用WireShark来抓取包 ...
 - C语言库函数大全及应用实例四
			
原文:C语言库函数大全及应用实例四 [编程资料]C语言库函数大全及应用实例四 couble fmod (double x, dou ...
 - Java-DES算法加密解密工具类
			
import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; import ...
 - 为网上流行论点“UIAutomator不能通过中文文本查找控件”正名
			
1. 问题描述和起因 相信大家学习UIAutomator一开始的时候必然会看过一下这篇文章. Android自动化测试(UiAutomator)简要介绍 因为你在百度输入UIAutomator搜索的时 ...
 - installshield 32位打包和64位打包的注意事项
			
原文:installshield 32位打包和64位打包的注意事项 32/64位问题要把握几点:1. 明确你的产品是否需要区分32/64位2. 明确你的产品中是否有32/64位的服务注册3. 了解In ...
 - Spring IOC之BeanFactory
			
BeanFactory提供了SpringIOC功能的基础但是它只是直接在用在和第三方框架的整合中,而且现在对于大部分的Spring用户来讲这一句成为了过去.BeanFactory和相关的接口,例如Be ...
 - POJ 2560 Freckles Prime问题解决算法
			
这个问题正在寻求最小生成树. 给定节点的坐标,那么我们需要根据各个点之间的这些坐标来计算距离. 除了这是标准的Prime算法的,能源利用Prime基本上,你可以使用Kruskal. 经典的算法必须填写 ...