Spring框架 - AOP概述

#AOP概述 ##日志 咱们须要在不一样业务逻辑的头尾都添加日志等相同功能正则表达式

##缺点 若是在也安全

  • 代码重复
  • 耦合业务逻辑与非业务逻辑

##AOP AOP能够把业务逻辑与非业务逻辑从工程组织上分开。框架

##AOP优势函数

  • 代码重用
    咱们在Java里面添加了这些日志,在添加业务逻辑后,并不须要添加剧复的非业务逻辑代码。
  • 解耦业务逻辑与非业务逻辑
    从维护代码上更方便

##从抽象总计AOP AOP也叫作横切,经过AOP切面,能够实现相同非业务代码切入到全部相同类型的业务代码。日志

输入图片说明

##AOP基本概念 Aspect:咱们把MyLogger叫作Aspect(切面),咱们把业务逻辑代码叫作Join point。函数执行是一个Join point。咱们在函数执行过程作一些AOP操做。还有一些其余的Join point,例如属性访问,能够在属性访问以前或者以后也能够添加AOP。
Spring AOP并无提供属性访问的AOP,只提供了函数的AOP。code

Advice:咱们把MyLogger在函数入口或者出口时打印日志,定义切面在某个特定的点执行功能。图片

在实际开发过程当中,咱们要告诉AOP框架咱们哪些业务逻辑是须要添加Aspect的。咱们须要有种方式告诉Aspect,在哪些函数上要执行Aspect。通常咱们使用正则表达式的方式,例如Caculator.*ip

输入图片说明

##AOP术语开发

  • Aspect:日志、安全等功能
  • Join point:函数执行或者属性访问 - Spring指函数执行
  • Advice: 在某个函数执行点上要执行的切面功能
  • Pointcut:匹配横切木雕函数的表达式

Aspect、Pointcut、Advice,若是咱们须要定义AOP相关功能的首先就须要定义这些内容。it

##Advice类型 咱们会在函数入口出口都会作一些操做。

  • Before:函数执行以前
  • After returning:函数正常返回以后
  • After throwing:函数抛出异常以后
  • After finally:函数返回以后
  • Around:函数执行先后

##Spring AOP

  • 非完整AOP实现
    只支持函数AOP实现
  • 整合AOP与IoC功能
    帮助咱们解决现实当中的问题

注意:若是在开发中须要更完整的AOP功能,能够去了解AspectJ,是Eclipse基金会下的子项目。

##Spring AOP 经过两种不一样的方式

  • XML schema-based AOP
    经过XML文件的方式
  • @AspectJ annotation-based AOP 经过注解的方式
相关文章
相关标签/搜索