开发者学堂课程【高校精品课-厦门大学 -JavaEE 平台技术:AOP 的概念】学习笔记,与课程紧密联系,让用户快速学习知识
课程地址:https://developer.aliyun.com/learning/course/80/detail/15929
AOP 的概念
内容概述
一、前言概述
二、面向切面编程
一、前言概述
其实无论怎样设计都没有办法解决这样的一些偶合问题,比如在系统中间的校权限
和写日志问题。
这些功能像“沙子”一样被掺入了系统中间,因为系统的很多地方都需要调用它,所以没有办法把这些“沙子”从系统中挑出来,系统会和校权限和写日志紧紧联系在一起。如果想把系统的主要业务和校权限、写日志这些非常分散的小功能隔离开。用现有的程序设计的方法,无论是面向对象的方式还是面向过程的方式,都是没有办法把这些“沙子”挑理干净的。最后仍需要留下一个点,这个点就是调用权
限和调用日志的地方。
二、面向切面编程
1、基本介绍
面向切面编程也就是 AOP 编程这样的一种方式其实是解决这样问题的最有效的方式。
它能把这些沙子从整个系统中间剥离出来,使得系统中间只剩下主要的业务过程。这些“沙子”可以定义在一个独立的地方,然后用一个定义的方式把它在系统运行的时候或是在系统编译的时候在与系统偶合起来,这样的方式就彻底把琐碎的分散
的小功能和系统主要的功能完全分开了。这就是 AOP 技术或是 AOP 编程技术。
2、实现方式
(1)面向切面编程语言 AspecctJ
(2)基于框架的切面编程
AOP 编程技术有两种实现方式。第一是使用一种新的编程语言例如 AspectJ,还有一种方式是在现有的框架上去实现 AOP 的这些概念。不管是用新的编程语言还是在现有的编程框架上实现 AOP 的这些概念,其实都会用到 AOP 的术语。这些术语在编程中会经常遇到,所以首先要介绍这些术语的概念。
3、AOP 术语
(1)adcice
首先要介绍的是 advice,这就是交叉到主业务中的零散的事物,比如日志和权限。Advice 中包含了两项内容,第一是要做什么,第二是什么时候做。什么时候做指的是在点的之前或是之后做,或者前后都要做,或者是在点报错的时候做,这是指做
的时机。
(2)Join Point
第二个就是 Join Point,这其实就是“掺沙子”的点,所有在系统中间需要掺加的点就是 Join Point。
(3)Point Cut
Join Point 是非常多的,所以通常需要一种定义的方式定义这些点是什么点,称之为 Point Cut,叫做切点。它定义了一个或者多个 Join Point,就是加长连接点,多
个 Join Point。通常它是用一种定义条件的方式定义 Join Point。
(4)Aspect
第四个切面是Aspect,它其实包含了前面所说的三个概念。Advice 是做什么,什么时候做;Point Cut 就是所谓的切点,它的所有的交叉临界点在何处。这两个合起
来就构成了 Aspect。
它包含了所说的三个内容。第一是点在什么地方;第二是点的什么时间要做的事;第三是要做什么。其中后两个是在 advice 中定义的,第一个是在 Point Cut 中定义的。
(5)Target
第五个就是 Target,即需要“掺沙子”的对象。所以 AOP 的target 中间没有 “沙子”,只有主要的业务。把要掺加的内容交给 aspect 定义。
最后在运行或编译的时候再把这些 “沙子”掺到主体系统中。这是 AOP 的一些基本概念和术语。