
spring源码
文章平均质量分 85
Jack爱258
坚持分享工作生活中的技术点滴,帮助需要的同学~~
展开
-
spring循环依赖之三级缓存的深入理解
都知道Spring通过三级缓存来解决循环依赖的问题。但是是不是必须三级缓存才能解决,二级缓存不能解决吗?很多篇文章都说第二级缓存不能去掉,是因为创建代理时要用到,那第三级缓存可以去掉吗?要分析是不是可以去掉,就先过一遍Spring是如何通过三级缓存来解决循环依赖的。所谓的循环依赖,就是两个或则两个以上的bean互相依赖对方,最终形成闭环。比如“A对象依赖B对象,而B对象也依赖A对象”,或者“A对象依赖B对象,B对象依赖C对象,C对象依赖A对象”;类似以下代码:常规情况下,会出现以下情况:Spring解原创 2022-06-15 10:21:50 · 507 阅读 · 0 评论 -
微服务如何向Nacos进行注册及心跳检测?James带你从源码一步步深入分析
大家好, 我是James, 最近整理了一下客户端微服务向Nacos注册及心跳的源码分析, 希望对大家学习有帮助, 源码可以找我的助理要一下哈v: lzc1314592首先下载好Nacos的源码关于源码怎么导入到maven, 在预习资料有个文档,写的很清楚Nacos源码分析访问nacos启动业务服务然后再停掉一个服务发现变成1了如果客户端访问刚关闭的那台服务, 是不是会报错呢?有可能还会调到已停的服务, 怎么处理?其实就是做了一个服务降级的处理互联网线上一般对非核心非关键的原创 2021-02-02 12:23:10 · 4214 阅读 · 3 评论 -
<重要>James带你透彻分析三大代理模式
James带你透彻分析三大代理模式1.代理模式1.1.快速掌握静态代理1.2.JDK动态代理1.3.Cglib动态代理1.代理模式Java最经典的设计模式代理模式(Proxy), 在我们开发及框架源码中无处不在,其实说白了, 就是我们使用另外一种方式来访问A对象的方法, 其本质还是访问了A对象的方法, 只是对A对象方法访问的时候做了些扩展, 把A对象封装成代理对象AA, 即通过AA代理对象来访问目标对象. 这样就可以在A对象的基础上,实现其它的额外附加功能;AA对象也叫做代理对象, 在不动A对象的前.原创 2021-01-26 22:35:28 · 1124 阅读 · 3 评论 -
为什么要学习源码?架构师告诉你原因
说起源码, 我相信大家都比较头疼, 有很多人面试也是坑在源码上, 那为什么要学习源码,我结合自己多年的源码阅读经验,一、James给大家总结几点:1、让个人技术快速成长:优秀的开源框架,底层的源码设计思想也非常优秀,同时还有含有大量的设计模式和并发编程技术,优秀的解决方案,熟读源码对猿们技术提升有很大帮助2、新技术学习能力:Java开源码框架的源码熟读后,若出现新的开源技术,能根据经验或官网资料快速掌握底层的实现,不怕技术更新迭代3、工作中解决问题能力:很多人开发过程中或线上遇到BUG, 首先原创 2021-01-14 11:57:50 · 5893 阅读 · 9 评论 -
带有@Transactional和@Async的循环依赖问题
今天我们来探讨一个有意思的spring源码问题,也是一个学生告诉了我现象我从源码里面找到了这个有意思的问题。首先我们看service层的代码案例,如下:@Service("transationServiceImpl")public class TransationServiceImpl implements TransationService { @Autowired Tr...原创 2020-04-29 16:59:04 · 6606 阅读 · 6 评论 -
spring事务中的超时时间很多人都不理解
在spring中如何使用事务是一个很大的问题,其中有一个我需要在这篇文章中着重讲解一下,就是spring事务中的超时时间问题,很多同学不知道如何才能是这个超时时间生效,导致在使用过程中出现各种各样的问题。1、使用mybatis框架来做数据库操作代码案例如下:@Transactional(propagation = Propagation.REQUIRED,timeout = 5) @...原创 2020-04-16 15:00:21 · 16971 阅读 · 2 评论 -
spring中动态数据源切换失效问题剖析
我们在使用spring中动态数据源的时候,往往在业务代码中需要指定数据源,在进行业务操作的时候就会去指定的数据源操作数据:代码如下数据源,两个数据源,ds1,ds2:@Bean public DataSource dynamicDataSource() { Map<Object, Object> targetDataSources = new ...原创 2020-01-16 11:03:36 · 6070 阅读 · 7 评论 -
如何在spring源码里面写注释并且能断点调试
热爱spring源码的同学,应该都希望在自己的spring源码jar包里面写点注释来加深对源码的理解,这篇博客主要就是告诉大家如何做到这点:1、下载spring源码我这里是下载的最新版本的spring源码,并且使用的是马云镜像,千万不要用GitHub下载,太慢了,慢得想死git clone --branch v5.1.3.RELEASE https://gitee.com...原创 2019-11-30 14:36:59 · 3094 阅读 · 1 评论 -
源码分析FactoryBean接口不为人知的秘密
FactoryBean接口在spring中是一个非常好用且容易被人忽略的接口。OK借助这个机会我们把它的秘密扒出来,让它落体出镜好吧。首先贴一个代码:import org.springframework.beans.factory.FactoryBean;public class FactoryBeanTest implements FactoryBean { private U...原创 2019-09-19 15:05:04 · 1012 阅读 · 1 评论 -
ApplicationContextAware接口的setApplicationContext方法调用过程
我们都知道实现了ApplicationContextAware接口的类会被调用setApplicationContext方法,从而获取到spring容器的上下文。但是这个调用过程缺很少有人知道,现在博主通过源码分析带大家掌握这个调用过程。1、当我们启动spring容器的时候,我们执行到refresh()方法。其中我们进入prepareBeanFactory(beanFactory);去看看。...原创 2019-09-18 20:56:52 · 6680 阅读 · 1 评论 -
spring事务从底层掌握其实现原理
流程介绍主流程介绍众所周知,Spring事务采用AOP的方式实现,我们从TransactionAspectSupport这个类开始分析。获取事务的属性(@Transactional注解中的配置)加载配置中的TransactionManager.获取收集事务信息TransactionInfo执行目标方法出现异常,尝试处理。清理事务相关信息提交事务//1. 获取@Transac...原创 2019-09-16 14:25:36 · 2318 阅读 · 0 评论 -
spring中非单例下的循环依赖问题源码解读
1、在spring中非单例的实例作用域有: prototype、session、request那么如果是这种实例作用域如果出现了循环依赖会有什么后果呢?看配置:<bean class="com.zhuguang.jack.prototype.PrototypeTestA" id="prototypeTestA" scope="prototype"> <...原创 2019-03-09 12:21:12 · 1431 阅读 · 0 评论 -
spring中自定义scope的代码案例和源码解读
使用spring的小伙伴都知道,一个bean实例是有其作用于的,比如:单例(singleton),多例(prototype),这些都是spring容器管理实例的一种方式,那么在spring中有没有办法按照我们自己的意愿去管理我们的实例呢?答案是肯定的,那就是spring中自定义scope。那么如何自定义呢?先看一个简单的bean标签:<bean class="com.zhugu...原创 2019-03-08 15:44:43 · 1096 阅读 · 0 评论 -
XmlWebApplicationContext实例化过程
在spring中,如何实例化了XmlWebApplicationContextspring的配置文件加载是以监听的方式加载的xml配置文件ContextLoader类中有一个静态代码块static { // Load default strategy implementations from properties file. // This is currently s...原创 2018-12-25 22:30:57 · 3817 阅读 · 1 评论 -
spring中如何修改allowBeanDefinitionOverriding
首先得弄清楚这两个参数的意思:allowBeanDefinitionOverriding运行beanDefinition覆盖,默认情况下,如果beanDefinitionMap有重复的key存在时就会抛异常,就是由这个参数决定的。如果把这个参数设置为true,那么就允许相同key情况下beanDefinition实例的覆盖。源码请看:当spring解析<bean>标签,并且...原创 2018-12-25 21:50:43 · 19740 阅读 · 1 评论 -
ApplicationContextInitializer接口的源码解读
ApplicationContextInitializer接口的作用:可以在spring的上下文ApplicationContext初始化之前,即wac.refresh()之前修改spring上下文属性。源码如下configureAndRefreshWebApplicationContext(ConfigurableWebApplicationContext wac){......原创 2018-12-25 16:56:44 · 268 阅读 · 0 评论 -
spring和springmvc的关系
如果想要了解spring和springmvc的关系,首先得从web.xml配置文件开始讲起如下web.xml配置<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" ><...原创 2018-12-25 16:12:05 · 5034 阅读 · 0 评论 -
InstantiationAwareBeanPostProcessor和@Autowired,@Value的依赖注入
在上篇博文中https://blog.youkuaiyun.com/luoyang_java/article/details/85709475我们说了,MergedBeanDefinitionPostProcessor扫描了bean,并且把bean中有@Autowired和@Value注解的field和method封装成了InjectionMetadata对象。这篇博文,我们来说说,spring是怎么根据封装...原创 2019-01-03 23:50:32 · 1479 阅读 · 1 评论 -
MergedBeanDefinitionPostProcessor和@Autowired,@Value的关系
热爱spring源码的同学应该知道MergedBeanDefinitionPostProcessor这个接口,这个接口对@Autowired和@Value的支持起到了至关重要的作用。当某个bean在实例化的时候就会调到所有的实现了MergedBeanDefinitionPostProcessor接口的实例。其中就有一个非常关键的类:AutowiredAnnotationBeanPostProces...原创 2019-01-03 19:11:46 · 10212 阅读 · 2 评论