- 博客(6)
- 资源 (1)
- 收藏
- 关注
原创 spring mvc运行流程源码深度解析(同步debug效果更佳)
前言:Spring Mvc的设计主要围绕着DispatcherServlet来展开的,直接分析DispatcherServlet即可。个人理解SpringMvc其实就是一个Servelt Plus 。观察DispatcherServlet继承关系可以得出如下结论:DispatcherServlet其实就是一个Servlet,而 一个Servelt完整生命周期必然少不了 init()、service()、destory() 这几个步骤DispatcherServlet 继承到 HttpServlet
2021-04-26 16:13:07 565 5
原创 一个小小的乐观锁、悲观锁也能扯这么多
前言:我们一个普通的下单接口通常都包含如下三步操作,如果下单不成功的话将会返回给用户一个提示下单失败。查询库存(select stock from xx where id = xx)扣减更新库存(update xx set stock = stock - 1 where id = xx)生成订单如果是只有一个用户来请求下单接口,那么上述的操作毫无疑问是一定正常的,可是真实环境中可是处处存在并发的,如果此时库存数量为1,在高并发的情况下面用户一、二都查询到了库存,然后都来扣减库存那么会导致库存数量
2021-04-19 20:52:26 205
原创 全面解读spring注解事务失效场景,伪代码+图文深度解析spring源码运行过程
说起spring事务大家肯定都不陌生,在springboot项目中我们只需在需要事务控制的方法上面添加@Transactional注解即可,但是在springboot项目中使用事务,如下俩个注解不加也行。@EnableAspectJAutoProxy:开启aop自动代理 默认为false(不加也行)@EnableTransactionManagement:开启spring事务(@SpringBootApplication中已经为我们开启过了spring事务,不加也行)spring事务:支持配
2021-04-17 19:49:06 1395
原创 aop增强器执行流程,手把手带你debug (文章末尾有干货)
spring Aop运行流程新建一个切面,对目标对象的Before、After、Around、AfterThrowing、AfterReturning进行增强@Aspect@Componentpublic class MyAspectj { @Pointcut("execution(* com.zzh.demo.springAopSourceStudy.prepareBeans.targetObject.*(..))") public void targetObjectPoint()
2021-04-09 21:01:26 665
原创 spring 源码解析(配图文讲解)顺带搞懂了循环依赖、aop底层实现
平时用aop用的很爽,今天决定研究一下源码,基于spring+aspectj来讲AOP定义:一种切面的编程思想具体实现有:1:springAOP2:spring+aspectj底层实现:cglib、jdk动态代理@EnableAspectJAutoProxy(proxyTargetClass = false)这个注解添加上aop就可以正常运行,一删掉就失效了,那么就从这里分析开始吧|可以看到这其实是一个自定义注解,关键的地方在于@import,这个注解给AspectJAutoProxyRe
2021-04-07 16:16:17 528 1
原创 深入jdk动态代理源码解析
阅读源码前先清楚应用效果更佳 模拟jdk动态代理 本文着重于源码,一个小案例带你一步步分析jdk动态代理的源码????。曾几何时不知到读者有没有想过如下问题????newProxyInstance()出来的对象和我们的myTargetObject对象有什么不同?为啥jdk代理只为实现类的代理、而不为继承类的代理?为啥jdk生成的代理对象居然不支持类型转换为目标对象!?jdk代理中的invoke方法执行时机是什么时候?proxy.say(); 中发生了什么,能大概讲讲吗?@Test p
2021-04-04 11:51:34 300
四年java开发需具备的技能
2023-12-18
TA创建的收藏夹 TA关注的收藏夹
TA关注的人