Spring系列源码
文章平均质量分 90
Spring,SpringMVC,SpringBoot,SpringCloud
yilyil
勿在浮沙筑高台
展开
-
【SpringMVC源码】容器创建,请求处理,异常处理,视图渲染等系列流程
根据HandlerMapping来寻找对于的handler(handler就是我们写得处理这个请求的逻辑)以及拦截器handler的寻找其中有主要的两个HandlerMapping实现,分别是AbstractHandlerMethodMapping,AbstractUrlHandlerMapping,类图如下了解这个两个类之前需要了解,Controller的3种实现方式,可以参考这个标注@Controller注解,注解指定url继承Controller类,实现handleRequest方法.原创 2021-10-30 17:39:23 · 875 阅读 · 2 评论 -
【Spring源码】二:AOP代理的循环依赖
关于包含AOP代理的循环依赖两层缓存提前暴露对象解决循环依赖,三层缓存存储代理对象解决AOP循环依赖A实例化完成之后,将funcA放入三级缓存(这是一个lambda表达式,可以找到A)初始化A(给A赋值属性B),所以又去创建BB实例化完成之后,将funcB放入三级缓存(这是一个lambda表达式,可以找到B)初始化B(给B填充属性A),又去从容器中获取A此时可以从三级缓存中查到A的funcA对象,调用getObject(),其实调用了getEarlyBeanReference,生成了代理对象原创 2021-10-17 17:08:54 · 1395 阅读 · 0 评论 -
【Spring源码】一:整体流程
如果是BDRPP类,先处理用户自定义,调用PPBDR,处理容器根据优先级排序,调用PPBDR;BFPP加入之后一起执行按顺序PPBF原创 2021-10-17 17:07:56 · 936 阅读 · 0 评论 -
【Spring源码】三:AOP执行过程
什么是AOPAOP是不同于OOP的一种编程思想,AOP关注的是横向,OOP关注的是纵向将系统中与业务无关的动作或服务(如:日志记录、事务处理、权限控制)设计为通用、不介入特定业务对象的、职责清楚的Aspect对象,这就是Aspect-oriented programming,即AOP编程Aspect:使用代理对象将记录等与业务无关的动作或任务提出来,设计为一个服务对象,这样的对象称为切面Advice:Aspect指的是一类服务,而Advice是这类服务当中具体的一个,如日志服务前面的Dynami原创 2021-10-17 17:09:51 · 1031 阅读 · 0 评论 -
【SpringBoot自动装配】@ComponentScan @EnableTransactionManagement都去哪了
一丶疑问大家时否有这样的疑问,写spring项目时需要使用xml或者注解来扫描包扫标注了@Controller、@Service、@Repository,@Component 到spring容器开启事务,来保证sql操作的原子性但是到了springboot我们没有写过如下的@ComponentScan("com.jh")@EnableTransactionManagement@Configurationpublic class Config { ....}<context:原创 2021-08-29 20:34:11 · 843 阅读 · 2 评论