Aop理解,主要术语

   AOP(Aspect Oriented Programming)书面解释是面向切面编程。是spring核心之一。经常被用来处理事务,日志和其他一些不是主要业务逻辑的需求中。
下面使用一个简单的场景来说明Aop。该场景是这样的,在一个系统中,对于用户的某些操作需要记录日志,例如,用户删除,修改某些敏感数据。
一. 为什么使用Aop
   想一想如果我们不使用Aop会怎么处理呢?一般情况下,我们会新建一个类LogHandler,然后在该类中新建一个方法,暂且叫做logDetail方法,然后在需要进行写日志的地方调用该方法。这样做的后果是在具体的业务方法中会到处充斥着不是正常业务逻辑的logDetail方法,代码的可读性,可维护性都不是很好,同时这种处理log的方法已经侵入到业务逻辑中,耦合性太高。
如果我们使用Aop,那么我们就可以在不影响程序的业务完整性的情况,把写日志这个需求完成。
而要实现Aop也仅仅只要在spring中配置一下即可(xml形式或者annotation形式)。这样处理是没有侵入性的, 不会去修改原有的代码,耦合性低。注意使用Aop也是需要新建Loghandler类和logDetail方法。
Aop之所以叫切面,我是这么理解的。我们可以这样认为,某个方法中要记录log的这个地方记为一个点,因为要在现有许多方法中要加入日志这个功能,所以在程序中就要许多个点,把这些点都连起来,就是一个平面了,所以叫做切面。

二. Aop术语
1. 通知(advice)
   切面要调用的方法,以及定义何时去执行log方法(它应该应用于某个方法调用之前?之后?还是只在方法抛出异常的时候?),在例子场景中,就是logDetail方法。
2. 切面(Aspect)
   通常是切入的那个类,在例子场景中,就是LogHandler类。
3. pointCut(切入点)
   并不是所有的方法都需要记录log的,对于哪些方法要去记录log,这个就是pointcut需要处理的问题,它定义了“何地”要应用切面。pointCut是支持的通配符的。例如:pointcut="execution(* aop.spring.mylog.add* (..))"

猜你喜欢

转载自lzw0286.iteye.com/blog/1255209