Spring源码中关于Resource循环加载的疑问

Spring BeanDefinition载入由XmlBeanDefinitionReader实现,重写了父类AbstractBeanDefinitionReader的loadBeanDefinitions(Resource)方法,在这个方法中 !!处理了循环加载!!,现在对这一部分不是很明白,望大佬们赐教。

首先,这里声明了一个ThreadLocal,为每一个线程创建一个变量副本,那么多个线程之间不会出现访问数据的冲突

这里所谓的处理循环加载,Set是每个线程的独立副本,而且会在finally中移除Resource
那么问题来了:
1. 什么情况下会出现循环加载?
2. 如何理解这里的多线程环境,为什么要进行多线程访问保护?
望各位大佬不吝赐教,先谢谢各位啦。


#Java#
全部评论
使用localThread会为每个线程创建一个Set<EncodedResource>副本,保证线程之间的数据访问不会出现冲突。 在配置文件中可以通过<import>标签引用其他资源文件,当出现资源文件之间的循环引用时会抛出异常。 感谢Java群里大佬Null的解答。
点赞 回复 分享
发布于 2018-07-25 16:33
m
点赞 回复 分享
发布于 2018-07-25 16:23
mark 插眼
点赞 回复 分享
发布于 2018-07-25 15:58

相关推荐

鼠鼠第一次实习,啥也不懂一直是自己一个人吃的饭,不会做工作老是被嫌弃,大人的世界是这样的吗?
我是星星我会发亮:好的mt有两种,一种愿意教你的,一种几乎什么活都不给你派让你很闲允许你做自己事情的
点赞 评论 收藏
分享
05-29 22:11
门头沟学院 Java
Elastic90:抛开学历造假不谈,这公司的招聘需求也挺怪的,Java开发还要求你有图文识别、移动端开发和c++的经验,有点逆天了。
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务