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

相关推荐

老方子:英语等级cet写错了吧
点赞 评论 收藏
分享
黑皮白袜臭脚体育生:简历统一按使用了什么技术实现了什么功能解决了什么问题或提升了什么性能指标来写会更好另外宣传下自己的开源仿b站微服务项目,GitHub已经410star,牛客上有完整文档教程,如果觉得有帮助的话可以点个小星星,蟹蟹
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务