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

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

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

是安全的,可参考
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();
}
}
貌似有同步控制