问题描述
- spring aop 到底是什么东东, 至今不是很明白。
-
spring aop 通俗讲,怎么理解,越简单越通俗越好。因为没用过,至今还是有点小畏惧。哈哈
解决方案
通俗地说,一个程序,需要变化和扩展吧。除了直接在源代码上修改,我们还有一个办法就是把软件变成很多小块积木一样,然后通过替换其中的一块,来更改代码,每个积木就是一个aspect,而我们编写程序就是约定好每个程序需要哪些aspects,所以是aspects oriented。
spring提供了一些代码,来组装这些积木,而作为开发者,你直接编写每个积木块就可以了。
解决方案二:
AOP ,aspect oriented programm,就是面向切面编程。业务纵向是各不相同的,但是横向可能有共同的部分,例如一个方法调用之前可能都需要参数校验,在一个方法执行之前都需要打印一些参数信息等,这类相同功能在大量不同的类中可能都需要重复编写。那么我们可以把这些横向公共的部分抽取出来,利用反射回掉,自动调用这些操作,而不用再代码中显式编写,可以省去大量的重复工作。
切面,就是横向公共部分,一刀横向切下去有相同操作,而纵向看都是各自不同的功能。
解决方案三:
打个比方,每天吃饭,是一件事情,现在我们每天吃饭前都要洗手,那么我们可以做洗手这件事,这就是一个切面,在每天吃饭前执行。
日后我们吃饭,不论是去餐馆,还是大排档,都在吃饭前执行洗手这个动作。
切面应是一次开发终身受用的,用于处理一类场景,并且在日后的开发中不再需要关心。
解决方案四:
这玩意不要去扣字面意思。
只要明白它采用了字节码的技术来进行扩展。
假设有方法funcA()
对这方法调用时,可以在调用前、调用后或调用异常时有额外的处理,而这个处理通常是调用一个方法。
spring的声明式事物处理就是如此。
你调用一个service层的方法,在调用前它开启事务,调用结束后提交事务,调用失败则事务回滚。
时间: 2024-12-31 13:01:25