Spring
文章平均质量分 93
个人Spring的学习
矮萌杰;
这个作者很懒,什么都没留下…
展开
-
Spring中FactoryBean的BeanName解读
这里写目录标题简介结果演示环境结论源码分析1、转变BeanName2、从容器中获取BeanName对应的对象3、核心方法getObjectForBeanInstance4、判断逻辑1、先判断`name`是否为空,是否是`&`开头2、 接下来继续走逻辑,通过BeanName从`某个`缓存中获取对象3、如果缓存取不到就进行创建对象处理4、创建对象过程5、加入到Bean对象`factoryBeanObjectCache`容器中小结DEBUG查看容器对象信息factoryBeanObjectCache容器B原创 2021-05-14 16:27:49 · 3216 阅读 · 4 评论 -
SpringBoot源码简要解析
SpringBoot源码简要解析涉及到的注解@Import@Condition衍生注解proxyBeanMethods属性依赖管理自动装配注解AutoConfigurationImportSelector自动配置自定义starter流程代码启动实例化对象过程Run方法内容补充:注解方式IOC的包扫描类注入小细节Tomcat的启动涉及到的注解@Import这个注解可以导入相应的组件对象,并且这个注解对应的有三种使用方法;下面简单举一些例子。1、直接使用import导入组件类2、直接使用import原创 2021-02-19 11:38:17 · 259 阅读 · 0 评论 -
从源码的角度简单分析Spring中的循环依赖
Spring中的循环依赖循环依赖条件解决方案Spring的一些容器不允许循环依赖出现的情况1、构造器注入2、多例对象的setter注入无法循环依赖数据结构支撑流程简单解析处理流程为什么需要二级缓存不支持循环依赖的原因提前暴露对象的条件循环依赖条件对象之间彼此的相互引用。例如A持有B对象,同时B也持有A对象也存在多个对象相互引用;例如A持有B,B持有C,C持有A的情况。解决方案Spring中解决循环依赖使用了三个缓存(即一二三级缓存),并且通过提前暴露对象的手段使未进行依赖注入的对象可用。S原创 2021-02-19 10:04:20 · 169 阅读 · 0 评论 -
Spring的事务传播行为
Spring的事务传播行为概念分类表格解析简单测试PROPAGATION_REQUIREDPROPAGATION_NESTED捕获异常的结果未捕获异常的结果这几天看了一下Guzz这个ORM框架,突然看到事务这块去复习了一下Spring事务一些东西,就看到了事务传播行为。之前一直觉得这一块比较混乱,所以在稍微整理一下概念事务传播行为主要针对被调用的业务对象。事务的传播行为表示整个事务处理过程所跨越的业务对象,将以什么样的行为参与事比如A.service()调用了B.service()的业务层方法原创 2021-01-21 12:22:56 · 182 阅读 · 0 评论 -
Spring事件发布监听机制
Spring事件发布监听机制大致流程步骤1、创建事件2、创建监听对象3、注册消息发布者结果演示DEBUG调试消息推送者是谁消息是如何推送的这几天在看业务源代码,发现一些业务的service层执行完时都会执行一个publishStateChangeEvent推送状态改变事件的方法。因为在经过这个消息推送后发现,数据发生了一些改变,说明这个事件肯定执行了一些方法去对相关数据进行了一些增删改查的操作。所以去追踪了一下执行的机制,也算是了解一下该功能,毕竟之前也没有用过Spring的发布监听。大致流程流原创 2021-01-19 17:28:51 · 404 阅读 · 0 评论 -
AOP结合ThreadLocal完成切面日志记录
AOP结合ThreadLocal完成切面日志记录功能需求业务步骤代码演示引发的问题测试准备测试问题的产生解决方案优化小结功能需求在开发过程中有时候会碰到一些日志记录的需求。需要记录包括统计执行时间,调用者IP,调用者登录的用户名,调用方法的全限定类名......等等信息。这时候,只需要使用Spring的AOP应用将系统一行一个切面插入,用前置通知和后置通知完成即可。业务步骤这里就不讲AOP配置啥的了,直接简单说明一下业务步骤记录当前时间通过JoinPaiont来获取要调用的方法信息通过re原创 2021-01-18 15:31:20 · 3371 阅读 · 3 评论 -
编译Spring源码的步骤及一些问题
编译Spring源码的步骤及问题步骤下载对应工具编译部分测试其他工程引入自己编译的源码碰到的问题小结步骤下载对应工具1.下载gradle,使用下载好的gradle进行编译,不需要太新,但是版本一定要匹配(好像没碰到版本冲突问题,注意一下就得了)。gradle网址:https://services.gradle.org/distributions/下载好后记得配置环境变量方式一:1.新增环境变量GRADLE_HOME->文件安装目录2.配置Path新增%GRADLE_HOME%bin即可原创 2020-12-13 11:48:35 · 505 阅读 · 0 评论 -
回顾SpringMVC小结
SpringMVC入门MVC是一种架构模式;Controller(控制器)、Model(模型)、View(视图);SpringMVC是Spring体系的轻量级WebMVC框架,其核心是Controller控制器,用于处理请求,产生响应;在MVC中,界面不允许直接访问后端的业务逻辑;SpringMVC基于SpringIOC容器运行,所有对象被IOC管理。Spring 5.x版本变化;最重要的新...原创 2020-03-17 11:01:07 · 162 阅读 · 0 评论 -
SpringMVC对异常处理的方式
SpringMVC对异常处理的两种方式1.@ControllerAdvice注解2.HandlerExceptionResolver接口3.针对404错误的管理小结:1.@ControllerAdvice注解使用方法:一般使用该注解都是基于JSON数据返回的,所以在类上增加@RestController注解,并且在加上@ControllerAdvice注解表明这个类是一个统一异常处理类即可。@RestController@ControllerAdvicepublic class QuanExce原创 2020-06-18 20:22:18 · 177 阅读 · 0 评论