声明:本教程不收取任何费用,欢迎转载,尊重作者劳动成果,不得用于商业用途,侵权必究!!!
目录
一、图文举例说明
可能很多人不理解的, 就是这个所谓的面向切面编程到底是指什么?
举例来说吧
上图是一个基本功能的简化模型。
我们要开发任何一个模块,
基本都需要从客户端代码-->到服务端业务代码-->再到数据库处理对吧??
那一个系统显然不止一个模块
当模块写多了就会变成这样
接下来, 我们最常见的AOP功能就要出现了
你发现, 每条业务线, 都需要用户登录之后, 才有操作权限.
也就是说, 所有的操作, 开始之前, 都得做登陆权限检查(假设100行代码)
这个时候你怎么办?
最笨的办法是:每个位置都调用一次,登陆权限检查的代码
但是, 很显然, 我们不会这么做, 也不想这么做。
正确的实现方式应该是
到这儿, 你大概能理解什么叫面向切面编程了吧?
很多通用的业务处理, 都是基于这样的方式来完成的
二、什么是 aop、能做什么?
1、什么是aop,常用于?
AOP(Aspect-Oriented Programmjng),一般称为⾯向切⾯编程/⾯向⽅⾯编程。 用于将那些与业务无关,但却对多个对象产生影响的公共行为和逻辑,抽取并封装为一个可重用的模块,这个模块被命名为“切面”(Aspect),减少系统中的重复代码,降低了模块间的耦合度,同时捉高了系统的可维护性。 可用于权限认证、日志、事务处理等。 2、aop 和 oop AOP与OOP在字面上虽然非常类似,但却是面向不同领域的两种设计思想。 OOP(面向对象编程)针对业务处理过程的实体及其属性和行为进行抽象封装,以获得更加清楚高效的逻辑单元划分。 而AOP作为面向对象的一种补充,则是针对业务处理过程中的切面进行提取,已达到业务代码和公共行为代码之间低耦合性的隔离效果。 这两种设计思想在目标上有着本质的差异。
三、普通公用方法和aop的区别,aop的本质是什么?
普通公用方法和aop的区别:
普通的提取出一个公用方法,代码是拆分了,但耦合还是存在,因为每次还要调用这个公共方法,于是要解决的问题,就变成了如何将横切逻辑代码,悄无声息的加入到业务逻辑中。
aop本质:
在不改变原有业务逻辑的情况下增强横切逻辑,横切逻辑代码往往是权限校验代码、⽇志代
码、性能监控代码、事务控制代码等
四、参考资料
如何用通俗易懂方式解释面向(切面)AOP编程 和AOP的实现方式? - 知乎 (zhihu.com)
Java从入门到放弃!这套珍藏的【Spring】全家桶面试教程献给我仅有的18位粉丝!愿人人都能上岸!_哔哩哔哩_bilibili
https://www.youkuaiyun.com/tags/MtTaEg3sODcxMDYzLWJsb2cO0O0O.html