什么是AOP(面向切面编程)

2024-09-04 01:36
文章标签 编程 面向 aop 切面

本文主要是介绍什么是AOP(面向切面编程),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

前言

一、什么是面向切面编程

二、java中常用的AOP思想场景

三、示例


前言

小伙伴们在学校学习的时候,是否遇到过许多的编程思想。面向对象,面向过程,面向切面...。学习java的小伙伴在学习面向对象、面向切面的时候是否感到过迷惑。也许过了许久后才反应过来,原来是这么回事。今天我在此记录下什么是面向切面编程,如有不当之处还望指出。谢谢!


一、什么是面向切面编程

 AOP(Aspect Oriented Programming):面向切⾯编程,它是一种思想,是对某一类事情的集中处理。通过预编译和运行期间动态代理来实现程序功能的统一维护技术。

下面举个生活事例来说明一下面向切面,生活中大家都遇到过双方争执吧?甲方和乙方产生了争执,不断的争论一直得不到一个统一的意见。这个时候就需要丙方的切入,丙方的切入需要一个切入点产生一个切面隔离甲方和乙方的争执,然后由丙方从切入点参与进去来中和的集中处理甲方和乙方所争执的事情,从而得到一个合理的处理结果。这就是我理解的面向切面,即程序中的AOP。其中也说明了为什么使用AOP,即统一意见、统一处理问题。

二、java中常用的AOP思想场景

学习java的小伙伴都使用过spring吧?

spring中的业务处理事务控制(transactionManager);

Spring Web MVC的拦截器(HandlerInterceptorAdapter);

JavaWeb中的过滤器(Filter);

...

以上这些都是常遇到的AOP编程思想的实现。

三、示例

大家是否还记得JSP开发中的登录实现,系统中是如何判断用户是否登录的,只有用户登录后才能访问相关的功能页面,否则重定向到登录页面。

实现思路是:用户进入登录页面进行登录,登录成功后将用户相关信息保存到session中。而后在JSP访问时就判断这个记录了用户信息的SESSION,如果有用户信息允许访问,如果为null就重定向到登录页面。这样的实现是很麻烦的,需要一个一个JSP页面做判断。

后来使用servlet,然后引入了Filter,我们在定义的这个Filter中统一处理了上述中的登录验证流程。这样一来就不需要一个一个JSP页面做判断了,是不是方便了很多。这就是AOP(Aspect Oriented Programming)面向切⾯编程的魅力所在。

除了统一的用户登录判断之外,AOP 还可以实现:

系统中对日志的统一处理;

系统中对请求执行的跟踪处理;

系统中的统一编码处理;

系统中的统一异常处理等...


好了!谢谢大家,关于对AOP的浅谈就到这里。关于具体的应用后续文章应该会有体现。 

这篇关于什么是AOP(面向切面编程)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1134628

相关文章

Java AOP面向切面编程的概念和实现方式

《JavaAOP面向切面编程的概念和实现方式》AOP是面向切面编程,通过动态代理将横切关注点(如日志、事务)与核心业务逻辑分离,提升代码复用性和可维护性,本文给大家介绍JavaAOP面向切面编程的概... 目录一、AOP 是什么?二、AOP 的核心概念与实现方式核心概念实现方式三、Spring AOP 的关

SpringBoot AspectJ切面配合自定义注解实现权限校验的示例详解

《SpringBootAspectJ切面配合自定义注解实现权限校验的示例详解》本文章介绍了如何通过创建自定义的权限校验注解,配合AspectJ切面拦截注解实现权限校验,本文结合实例代码给大家介绍的非... 目录1. 创建权限校验注解2. 创建ASPectJ切面拦截注解校验权限3. 用法示例A. 参考文章本文

MySQL的JDBC编程详解

《MySQL的JDBC编程详解》:本文主要介绍MySQL的JDBC编程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言一、前置知识1. 引入依赖2. 认识 url二、JDBC 操作流程1. JDBC 的写操作2. JDBC 的读操作总结前言本文介绍了mysq

Spring 中的切面与事务结合使用完整示例

《Spring中的切面与事务结合使用完整示例》本文给大家介绍Spring中的切面与事务结合使用完整示例,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考... 目录 一、前置知识:Spring AOP 与 事务的关系 事务本质上就是一个“切面”二、核心组件三、完

Python异步编程之await与asyncio基本用法详解

《Python异步编程之await与asyncio基本用法详解》在Python中,await和asyncio是异步编程的核心工具,用于高效处理I/O密集型任务(如网络请求、文件读写、数据库操作等),接... 目录一、核心概念二、使用场景三、基本用法1. 定义协程2. 运行协程3. 并发执行多个任务四、关键

AOP编程的基本概念与idea编辑器的配合体验过程

《AOP编程的基本概念与idea编辑器的配合体验过程》文章简要介绍了AOP基础概念,包括Before/Around通知、PointCut切入点、Advice通知体、JoinPoint连接点等,说明它们... 目录BeforeAroundAdvise — 通知PointCut — 切入点Acpect — 切面

C#异步编程ConfigureAwait的使用小结

《C#异步编程ConfigureAwait的使用小结》本文介绍了异步编程在GUI和服务器端应用的优势,详细的介绍了async和await的关键作用,通过实例解析了在UI线程正确使用await.Conf... 异步编程是并发的一种形式,它有两大好处:对于面向终端用户的GUI程序,提高了响应能力对于服务器端应

C# async await 异步编程实现机制详解

《C#asyncawait异步编程实现机制详解》async/await是C#5.0引入的语法糖,它基于**状态机(StateMachine)**模式实现,将异步方法转换为编译器生成的状态机类,本... 目录一、async/await 异步编程实现机制1.1 核心概念1.2 编译器转换过程1.3 关键组件解析

Go语言数据库编程GORM 的基本使用详解

《Go语言数据库编程GORM的基本使用详解》GORM是Go语言流行的ORM框架,封装database/sql,支持自动迁移、关联、事务等,提供CRUD、条件查询、钩子函数、日志等功能,简化数据库操作... 目录一、安装与初始化1. 安装 GORM 及数据库驱动2. 建立数据库连接二、定义模型结构体三、自动迁

Springboot如何正确使用AOP问题

《Springboot如何正确使用AOP问题》:本文主要介绍Springboot如何正确使用AOP问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录​一、AOP概念二、切点表达式​execution表达式案例三、AOP通知四、springboot中使用AOP导出