在软件中,有些行为对于大多数应用都是通用的。日志,安全和事务管理几乎是所有软件都需要的。他们是否可以主动的参与呢,如果让应用程序只关注与自己所针对的业务领域问题,而其他的问题有其他应用对象来处理。是否属于一种封装呢。最近学习了spring的一些基本原理,在软件开发中,分布于应用中多处的功能被称为横切关注点(cross-cutting concerns)。通常,这些横切关注点从概念上是与应用的业务逻辑相分离的。将这些横切关注点与业务逻辑相分离是面向切面编程所解决的。

关于AOP的一些定义:

通知(Advice)

切面的工作被称为通知,且有目标,有自己需要完成的工作。

spring有五种类型的通知:

1.before   在方法被调用之前
2.after    在方法被调用之后
3.after-returning    在方法成功执行之后
4.after-throwing    在方法抛出异常之后
5.around    通知包裹了被通知的方法,在被通知方法调用之前和调用之后执行自定义的行为

连接点(Joinpoint)

连接点是在应用执行过程中能够插入切面的一个点,切面代码可以利用这些点插入到应用的正常流程之中,并添加新

的行为。Advice在应用程序上执行的点或时机,Spring只支持方法的JoinPoint,这个点也可以使属性修改,如:

Aspecj可以支持

切点(Poincut)

切点有助于缩小切面所通知连接点的范围。它定义了Advice应用到哪些JoinPoint上,对Spring来说是方法调用。

切面(Aspect)

是通知和切点的结合,通知和切点共同定义了关于切面的全部内容——她是什么,在何时和何处完成其功能。

Apring 对 AOP的4种支持:

1.基于代理的经典AOP

2.@AspectJ注解驱动的切面

3.纯POJO切面

4.注入式AspectJ切面

前3个都是spring基于代理的AOP变体,因此,spring对AOP的支持局限于方法拦截。如果AOP需求超过了简单方法拦截的范畴,那么就使用最后一个方法,利用Spring的依赖注入把Bean注入到AspectJ切面中。

总结:

下面的博客将会用自己敲的小例子来讲讲对于AOP的理解,对于另一种AOP的实现AspectJ,是如何与SpringAOP相结合的,等着进一步的了解。

面向切面编程(AOP)简介的更多相关文章

  1. Spring中的面向切面编程(AOP)简介

    一.什么是AOP AOP(Aspect-Oriented Programming, 面向切面编程): 是一种新的方法论, 是对传统 OOP(Object-Oriented Programming, 面 ...

  2. 04 Spring:01.Spring框架简介&&02.程序间耦合&&03.Spring的 IOC 和 DI&&08.面向切面编程 AOP&&10.Spring中事务控制

    spring共四天 第一天:spring框架的概述以及spring中基于XML的IOC配置 第二天:spring中基于注解的IOC和ioc的案例 第三天:spring中的aop和基于XML以及注解的A ...

  3. 设计模式之面向切面编程AOP

    动态的将代码切入到指定的方法.指定位置上的编程思想就是面向切面的编程. 代码只有两种,一种是逻辑代码.另一种是非逻辑代码.逻辑代码就是实现功能的核心代码,非逻辑代码就是处理琐碎事务的代码,比如说获取连 ...

  4. Spring学习手札(二)面向切面编程AOP

    AOP理解 Aspect Oriented Program面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术. 但是,这种说法有些片面,因为在软件工程中,AOP的价值体现的并 ...

  5. Spring学习笔记:面向切面编程AOP(Aspect Oriented Programming)

    一.面向切面编程AOP 目标:让我们可以“专心做事”,避免繁杂重复的功能编码 原理:将复杂的需求分解出不同方面,将公共功能集中解决 *****所谓面向切面编程,是一种通过预编译方式和运行期动态代理实现 ...

  6. Spring框架学习笔记(2)——面向切面编程AOP

    介绍 概念 面向切面编程AOP与面向对象编程OOP有所不同,AOP不是对OOP的替换,而是对OOP的一种补充,AOP增强了OOP. 假设我们有几个业务代码,都调用了某个方法,按照OOP的思想,我们就会 ...

  7. Spring之控制反转——IoC、面向切面编程——AOP

      控制反转——IoC 提出IoC的目的 为了解决对象之间的耦合度过高的问题,提出了IoC理论,用来实现对象之间的解耦. 什么是IoC IoC是Inversion of Control的缩写,译为控制 ...

  8. 【串线篇】面向切面编程AOP

    面向切面编程AOP 描述:将某段代码“动态”的切入到“指定方法”的“指定位置”进行运行的一种编程方式 (其底层就是Java的动态代理)spring对其做了简化书写 场景: 1).AOP加日志保存到数据 ...

  9. [译]如何在ASP.NET Core中实现面向切面编程(AOP)

    原文地址:ASPECT ORIENTED PROGRAMMING USING PROXIES IN ASP.NET CORE 原文作者:ZANID HAYTAM 译文地址:如何在ASP.NET Cor ...

  10. Spring框架系列(4) - 深入浅出Spring核心之面向切面编程(AOP)

    在Spring基础 - Spring简单例子引入Spring的核心中向你展示了AOP的基础含义,同时以此发散了一些AOP相关知识点; 本节将在此基础上进一步解读AOP的含义以及AOP的使用方式.@pd ...

随机推荐

  1. 8个超炫酷仿苹果应用的HTML5动画

    苹果的产品一直以精美的UI著称,无论是软件应用还是硬件设备.本文主要分享了8个很不错的HTML5动画应用,这些动画正式模仿了苹果的各类应用,有焦点图.钟表.菜单等HTML5应用和jQuery插件,大家 ...

  2. js生成二维码实例

    <!DOCTYPE html><html><head>    <title></title>    <meta charset=&qu ...

  3. LeetCode: Gas Station 解题报告

    Gas Station There are N gas stations along a circular route, where the amount of gas at station i is ...

  4. Spring Batch并行与扩展

    1. 概述 Spring Batch提供了多种方式用于处理并行,提高性能.主要分为2大类: - 单个进程,多线程 - 多个进程 因此,可以细分为以下几类: - 多线程Step(Multi-thread ...

  5. Oracle 重启数据库实例

    看你当前有多少个已经启动的实例: ps -ef|grep smon ORA-27101 Shared memory realm does not existORA-01034 ORACLE not a ...

  6. Android Studio占用C盘内存

    使用Android Studio的时候,会发现,在各种下载导入的时候,C盘内存耗费的非常的快,于是我看了下配置.

  7. 【Java】定义魔法数字,以及枚举类的构造方法的使用

    JavaWeb项目中需要定义各种常量时,常用方法有: 写到Property配置文件中,用静态代码块优先加载配置文件.参考http://www.cnblogs.com/guxin/p/java-prop ...

  8. 【C#】使用NHibernate连接MySQL数据库及增删改查

    学习资料 http://www.sikiedu.com/course/51/task/891/show https://www.codeproject.com/Articles/26123/NHibe ...

  9. select 操作选中添加、删除操作Javascript

    //添加选中项 function addItem() { var myMember = document.getElementById("myMember"); var other ...

  10. Android——shape和selector和layer-list的(详细说明 转)

    <shape>和<selector>在Android UI设计中经常用到.比如我们要自定义一个圆角Button,点击Button有些效果的变化,就要用到<shape> ...