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

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

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

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


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

相关推荐

不愿透露姓名的神秘牛友
01-07 07:54
已编辑
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务