标签:现在 热点 org 部分 配置文件 ffffff aspect 详解 定义
Aspect Oriented Programming,
即:面向切面编程
通过 预编译方式 和 运行期动态代理 来实现程序功能的统一维护的技术
AOP技术是OOP技术(即:面向对象编程)的延续,是当今软件开发的热点
原理:
动态代理
(相关知识点,请观看本人博文 —— 《详解 代理模式》)
好处:
- 对业务逻辑的各个部分进行隔离,从而使业务逻辑各部分间的耦合度降低
- 提高程序的可重用性,同时提高开发的效率
- 提供声明式事务
- 用户可以自定义切面
举个例子:
当我们编写购物网站时候,所运用的是MVC机制(servlet掉service,service掉dao)这种纵向调用模式
但是,假如上司要求在service和dao层的方法中增加日志,
按照我们往常的做法,要给每一个方法的每一个类去修改
但是,运用了AOP技术之后,我们就可以定义切面,
然后通过切面去给所需方法进行增强
如下图所示:
那么,现在本人来介绍一下 AOP中的几个常见名词:
跨越应用程序多个模块的方法或功能
即:与业务逻辑无关,但我们需要关注的部分
例如:日志、缓存、事务...
一个类
横切关注点 被模块化 后的对象
切面中的一个方法
非核心业务逻辑
也就是对核心业务逻辑增强的代码
分类:
- 前置通知 —— 目标方法前
- 后置通知 —— 目标方法后
- 环绕通知 —— 目标方法前后
- 异常通知 —— 目标方法抛出异常后
- 返回值通知 —— 目标方法返回后(在后置通知之后)
被通知的对象
向目标对象应用通知后,所创建的对象
横向交织的共同逻辑,
也就是定义切入的规则
业务逻辑类 中 可能被代理的方法
可以将核心业务方法和增强方法 关联起来
代理对象中的各种通知,
核心业务+非核心业务
那么,下面本人来通过一张图展示下上述名词的工作步骤:
首先,我们需要导入两个Jar包:
<!-- spring框架所有Jar包导入 -->
<!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.2.5.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.2.5.RELEASE</version>
</dependency>
<!-- aspectj Jar包导入 -->
<!-- https://mvnrepository.com/artifact/org.aspectj/aspectjweaver -->
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.9.4</version>
</dependency>
同样地,spring框架对于AOP机制,也提供了两套使用方式 —— 配置文件式 和 注解式
首先,本人来介绍一下 配置文件式 的语法:
请观看本人博文 —— 《【Spring框架学习】AOP机制 配置文件式 详解》
那么,接下来,本人再来讲解下 注解式 的语法:
请观看本人博文 —— 《【Spring框架学习】AOP机制 注解式 详解》
标签:现在 热点 org 部分 配置文件 ffffff aspect 详解 定义
原文地址:https://www.cnblogs.com/codderYouzg/p/12812914.html