基于浏览器的B/S结构 如何解决循环依赖?

发布时间:   来源:CSDN  

前言

在网络技术中基于浏览器的B/S结构无论在PC端还是手机端都充当着至关重要的角色。 PC端自不必说,手机中很多应用虽然是以APP的形式存在,但它采用的还是B/S结构。如今日头条、微信的朋友圈等,这些应用在内部封装了浏览器,后端仍然是 Web站点。

在大型网站和复杂系统的开发中,Java无疑具有很大的优势,而在lava的Web框架中 Sprig MVC 以其强大的功能和简单且灵活的用法受到越来越多开发者的青睐。


【资料图】

Spring MVC入门很简单,但是要想真正使用好却并非易事,而且现在也没有全面、深入地使用资料,以致在实际使用的过程中程序员经常会遇到各种各样的问题而不知道如何解决。对 Spring MVC 这样的开源项目来说。最好的学习方法当然是分析它的源代码,分析透源代码不仅可以让我们更灵活地使用 Spring MVC来开发高质量的产品,而且可以学习到其中的很多优秀的编程技巧和设计理念。

本次分享PDF文档资料除了分析Spring MVC的源代码,还系统地介绍了各种网站架构的演变以及 Web开发中所涉及的协议和Tomcat的实现方法,现在很多程序员都想了解这方面的知识,但苦于缺乏通俗易懂的资料,而且这些也是程序员达到更高的层次所需要的知识。

二、什么是循环依赖

循环依赖直白点就是发生在两个类,你引用我,我引用你的状态,如图:

三、如果不依赖于Spring自己解决循环依赖如何解决

以上图为例,假设,我们能够创建完成AService之后,放置到到一个缓存中,再去注入属性!每次注入属性的时候,所需要的属性值都从缓存中获取一遍,缓存中没有再去创建不就解决了?如图所示:

总结一下上面的流程:

AService创建完成后将自己加入到二级缓存,然后开始注入属性发现AService依赖BService于是先查询一级缓存是否有数据一级缓存没有就查询二级缓存,有就返回,没有就创建BService缓存中没有,开始实例化BService,然后注入内部属性!注入内部属性时发现依赖AService,于是先查询一级缓存是否有数据一级缓存没有就查询二级缓存,有就返回,没有就创建,很显然,二级缓存是有数据的。于是从二级缓存取出AService注入到BService。BService创建完成后将自己从二级缓存挪到一级缓存,并返回。AService获取到BService后,注入到自己的属性中并把自己从二级缓存挪的一级缓存,返回AService!至此,循环依赖创建完成!

那么有了上面的思路,我们如何用代码实现一遍我们的逻辑呢?

Java高频面试专题合集解析:

当然在这还有更多整理总结的Java进阶学习笔记和面试题未展示,在这也是免费分享给那些有需要的朋友,其中囊括了Dubbo、Redis、Netty、zookeeper、Spring cloud、分布式、高并发等架构资料和完整的Java架构学习进阶导图!

这些资料都以整理成了PDF文档,如果有需要可以狂戳这里免费下载即可!

相关文章Related

返回栏目>>