0 0

Spring中通过ApplicationContextAware的实现类获得的ApplicationContext是线程安全的吗?5

项目中我需要根据登陆用户动态修改Spring的数据源配置,即通过实现ApplicationContextAware接口来获取ApplicationContext,并将用户对应的数据源bean覆盖这个ApplicationContext的数据源bean。在多线程的情况下,是否会发生同步问题?Spring是否做到了每个线程持有独立的一份ApplicationContext,或者说我通过实现ApplicationContextAware而获得的ApplicationContext是否经过了ThreadLocal的封装优化?
2012年9月24日 15:37

2个答案 按时间排序 按投票排序

0 0

采纳的答案

ApplicationContextAware 在容器初始化完成后将ApplicationContext注入, 如果你只读ApplicationContext 肯定是线程安全的。

2012年9月24日 15:44
0 0

是安全的,可参考
http://blog.csdn.net/zhouwubin123/article/details/6929233
public static void setApplicationContext(ApplicationContext applicationContext) {
  synchronized (ContextUtils.class) {
   log.debug("setApplicationContext, notifyAll");
   ContextUtils.applicationContext = applicationContext;
   ContextUtils.class.notifyAll();
  }
}
貌似有同步控制

2012年9月24日 16:01

相关推荐

Global site tag (gtag.js) - Google Analytics