`
ayaya
  • 浏览: 453933 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

面向切面编程AOP

阅读更多

aop里有切点,切面,通知的概念

Term 术语
Definition 定义
Concern A particular issue
(关注特定问题)
感兴趣应用的特定问题、概念、范围。例如,事务管理、持久化、日志、安全等。
Crosscutting Concern
(横切关注点)
在关注点实现中贯穿了很多类,这在面向对象(OOP)中通常很难实现和维护。
Aspect
(切面)
模块化的横切关注点,通过代码的聚合和隔离实现。
Join Point
(连接点)
在程序或者类执行时的一个点。在Spring的AOP实现中,连接点总是一个方法调用。其他的例子包括访问字段(包括实例中字段的读写),变量和异常处理。
Advice
(通知)
特定连接点所采取的动作。Spring有几种不同类型的通知,包括around、before、throws和after returning。在这几种类型的通知中,around是最强大的,在方法调用的前后都有执行一些操作的机会。之前用到的TraceInterceptor就是around类型的通知,它实现了AOP联盟的MethodInterceptor接口。通过实现下面的Spring接口可以使用其他类型的通知:
Ø         MethodBeforeAdvice
Ø         ThrowsAdvice
Ø         AfterReturningAdvice
Pointcut
(切入点)
连接点的集合,这些连接点确认何时一个通知将会触发。切入点通常使用正则表达式或者是通配符语法。
Introduction
(引入)
添加字段或者方法到一个通知类。Spring允许你在任何通知对象上引入新的接口。例如,你可以使用引入以便让任意对象实现IsModified接口,来简化缓存。
Weaving
(组织)
装配切面来创建一个被通知对象。可以在编译期间完成(像AspectJ做的那样)也可以在运行时完成。本章后面的组织策略部分详细讨论不同的组织策略(也就是实现AOP)。
Interceptor
(拦截器)
一种AOP实现策略,对与特点的连接点,可能存在一个拦截器链。
AOP Proxy
(AOP代理)
AOP框架创建的对象,包括通知。在Spring中,一个AOP代理可能是JDK动态代理或者是CGLIB代理。
Target Object
(目标对象)
包含连接点的对象。在使用拦截的框架中,它是在拦截器链末端的对象实例。也叫做被通知对象或者被代理对象。

切面。 用个比喻会更形象一些。可以把切面理解成一把菜刀,而其他方法就好像是黏糕,如果你要把所有的黏糕都在某个
位置切断,那么就用这个菜刀就行了。这个菜刀,就是我们需要的切面类。

切入点。切入点一般是一个表达式。用上面的例子来说,就是我们对哪些黏糕“下手”。

例如 execution(* com.xyz.someapp.service.*.*(..))

通知。 通过切入点,我们知道要对哪些黏糕下手,但是,我们还得知道要在黏糕的哪个位置下手,是在头部(Before),
尾部(After),还是首尾(Around)等等。

最形象的例子,就是如果你想给所有的DB操作类都加上一个特殊的log,怎么弄呢?是修改所有的DB操作类,还是写一个类,就能让这个类的方法嵌入到所有的DB操作类中?

给哪些类在哪个位置“插入”一些本来没有的代码

这些“插入”的代码都是程序运行的时候动态插入的,所以看起来很神奇


有两种方式,一种是java本身提供了动态代理方式,这种方式基于接口;另一种是cglib这样的,动态修改java运行时的字节码

首先通过切入点来确定要切入到哪些类里
例如
execution(* com.xyz.someapp.service.*.*(..))
然后使用“通知”,确定切入的地点:是在头部(Before),
尾部(After),还是首尾(Around)

分享到:
评论

相关推荐

    面向切面编程aop简介

    面向切面编程(AOP,Aspect Oriented Programming)是Spring框架的重要组成部分,它提供了一种在不修改原有业务代码的基础上,插入额外功能的编程模型。Spring AOP使得开发者能够更方便地实现如日志记录、事务管理、...

    Spring面向切面编程AOP

    面向切面编程(AOP,Aspect Oriented Programming)是Spring框架中的一个重要特性,它提供了一种模块化和声明式的方式来处理程序中的横切关注点,如日志、事务管理、安全控制等。AOP的核心概念包括切面、通知、连接...

    基于框架的Web开发-面向切面编程AOP入门.doc

    总的来说,面向切面编程AOP是一种强大的工具,用于管理横切关注点,它使我们能够编写更加模块化、可重用的代码,特别是在大型企业级应用中,如Web开发,它可以极大地提升代码质量和开发效率。通过合理使用AOP,我们...

    Spring-aop面向切面编程实例

    面向切面编程(Aspect-Oriented Programming,AOP)是Spring框架的核心特性之一,它提供了一种优雅的方式来处理系统的横切关注点,如日志、事务管理、性能监控和权限控制等。在Spring中,AOP主要通过代理模式实现,...

    面向切面编程

    ### 面向切面编程(AOP) 面向切面编程(Aspect-Oriented Programming,简称AOP)是一种编程范式,它旨在提高模块化程度,通过将横切关注点(cross-cutting concerns)从业务逻辑中分离出来,使得代码更加清晰、...

    Spring 面向切面编程AOP实现详解

    Spring 面向切面编程AOP实现详解 面向切面编程(AOP)是一种编程技术,旨在将横切关注点从业务逻辑中分离出来,提高系统的可扩展性和可维护性。Spring 作为一个流行的 Java 框架,提供了完备的 AOP 实现机制。 1. ...

    AOP面向切面编程.ppt

    AOP面向切面编程.ppt

    面向切面 aop

    面向切面编程(AOP,Aspect Oriented Programming)是一种编程范式,旨在将系统中的关注点分离,使得代码更加模块化,易于维护和扩展。在传统的面向对象编程(OOP)中,业务逻辑往往与日志、事务管理、权限控制等横...

    aop 面向切面编程 demo

    面向切面编程(AOP)是一种编程范式,它旨在将关注点分离,使得系统中的核心业务逻辑与系统服务(如日志、事务管理、权限控制等)可以解耦。在Android开发中,AOP的应用可以帮助我们更好地组织代码,提高可维护性和...

    面向切面的编程(AOP)及在Spring中的应用

    总的来说,面向切面编程AOP是一种强大的设计模式,它通过Spring框架的实现,使得在Java应用中实现关注点分离变得更加容易。正确地运用AOP,可以极大地提升代码的整洁性和可维护性,同时降低系统的复杂度。

    AOP_使用spring框架进行面向切面编程

    面向切面编程(AOP)是一种编程范式,它旨在减少代码中的重复部分,特别是那些与核心业务逻辑无关但又必须处理的交叉关注点,如日志、事务管理、安全控制等。Spring框架是Java领域中实现AOP的常用工具,它通过提供...

    spring使用动态代理面向切面编程(AOP) xml

    在Spring框架中,面向切面编程(AOP)是一种强大的设计模式,它允许开发者将关注点分离,将横切关注点(如日志、事务管理、权限检查等)与核心业务逻辑解耦。本篇文章将深入探讨如何使用Spring的动态代理机制实现AOP...

    AOP面向切面编程总结

    ### AOP面向切面编程详解 #### 一、AOP概览 AOP(Aspect-Oriented Programming,面向切面编程)是一种编程思想和技术,它作为OOP(面向对象编程)的一种补充,主要解决了OOP在处理横切关注点方面的不足。在传统的...

    .net AOP 面向切面编程很好的例子

    spect Oriented Programming(AOP),面向切面编程,是一个比较热门的话题。AOP主要实现的目的是针对业务处理过程中的切面进行提取,它所面对的是处理过程中的某个步骤或阶段,以获得逻辑过程中各部分之间低耦合性的...

    AOP面向切面编程实例

    面向切面编程(Aspect-Oriented Programming,简称AOP)是一种编程范式,它旨在提高软件的模块化程度,通过将关注点分离到不同的“切面”中来实现。在.NET环境中,AOP通常通过拦截器(Interceptor)或动态代理...

    Chapter 6_ 使用Spring进行面向切面编程(AOP)

    面向切面编程(AOP)提供另外一种角度来思考程序结构,通过这种方式弥补了面向对象编程(OOP)的不足。 除了类(classes)以外,AOP提供了 切面。切面对关注点进行模块化,例如横切多个类型和对象的事务管理。

    浅谈Android面向切面编程(AOP)

    面向切面编程(AOP)是一种编程范式,旨在提高代码的可维护性和复用性。在Android开发中,AOP常用来处理横切关注点,如日志记录、性能监控、事务管理等,这些关注点往往分散在多个类和方法中。AOP通过将这些通用逻辑...

    面向切面编程的介绍有优点

    面向切面编程(Aspect-Oriented Programming,简称 AOP)是一种编程范式,它通过将横切关注点(cross-cutting concerns)从业务逻辑中分离出来,并将其封装为独立的组件,来降低软件系统的耦合度。AOP 的核心思想是...

    Spring AOP面向切面三种实现

    在IT行业中,Spring框架是Java企业级应用开发的首选,其强大的功能之一就是AOP(面向切面编程)。本文将详细解析Spring AOP的三种实现方式,帮助你深入理解这一重要概念。 首先,理解AOP的基本概念至关重要。AOP是...

    struts2 拦截器(AOP,面向切面编程)

    拦截器(Interceptor)是Struts2的核心特性之一,它基于AOP(面向切面编程)思想,提供了对请求处理过程的灵活控制。在本篇文章中,我们将深入探讨Struts2的拦截器机制以及AOP的概念。 **AOP(面向切面编程)**是一...

Global site tag (gtag.js) - Google Analytics