面试官:Spring Aop 常见注解和执行顺序
最近,我在给很多人做简历修改和模拟面试的时候,有部分朋友和我反馈Spring AOP的面试题,今天就和大家来问问。
Spring 一开始最强大的就是 IOC / AOP 两大核心功能,我们今天一起来学习一下 Spring AOP 常见注解和执行顺序。
Spring 面试 核心点:
IOC、AOP、Bean注入、Bean的生命周期、Bean的循环依赖
首先我们一起来回顾一下 Spring Aop 中常用的几个注解:
-
@Before
前置通知:目标方法之前执行 -
@After
后置通知:目标方法之后执行(始终执行) -
@AfterReturning
返回之后通知:执行方法结束之前执行(异常不执行) -
@AfterThrowing
异常通知:出香异常后执行 -
@Around
环绕通知:环绕目标方法执行
常见问题
1、你肯定知道 Spring , 那说说 Aop 的去全部通知顺序, Spring Boot 或者 Spring Boot 2 对 aop 的执行顺序影响?
2、说说你在 AOP 中遇到的那些坑?
示例代码
下面我们先快速构建一个 spring aop 的 demo 程序来一起讨论 spring aop 中的一些细节。
配置文件
为了方便我直接
前方一面黑暗: 有些问题啊,对于读占比多的场景,为什么MVCC比读写锁快20%,解释不清楚啊?MVCC解决了读写锁的哪些问题?解决了读写冲突,对于写写冲突,因为文件锁的限制MVCC并没有解决。那么读多写少比写多读少情况下的读写冲突更多吗?如果没有更多,那么MVCC优化了哪里的性能?
我真想进步: 这2种注解都需要3种注入方式(基于Field,基于constantor, 基于setter)中的一种,不知道你说的逻辑在哪里?
我真想进步: 自动注册方式不同点在哪里?你说了些什么废话啊,逻辑自洽否?服了
cxyzsccc: 写了一堆,不知道哪个有用,直接把最终代码弄出来不就行了
做个牛逼人物: 读已提交与MVCC只是考虑了,只读事务遇到并发写的场景,作者第一个幻读场景其实是并发写事务,也就是类似read-modify-write 场景,这种场景是无法通过mvcc解决的