怎么判断spring容器加载完成

 我来答
萝莉MM在路上
2016-11-26 · TA获得超过989个赞
知道小有建树答主
回答量:6429
采纳率:0%
帮助的人:991万
展开全部
查看所指定name的context是否注册成功,以后用此容器来获取其中的object.
常见的使用方式:
Application_Start中使用ContextRegistry.GetContext().GetObject()从容器中获取对象,但是由于spring.root在Application_Start中初始化,在执行到你调用GetObject()方法获取对象的时候,spring.root并不能初始化完成,导致出现
Error creating context 'spring.root': 未将对象引用设置到对象的实例。
的问题。
临时的解决方案:
if (Spring.Context.Support.ContextRegistry..IsContextRegistered(spring.root)){springContent = Spring.Context.Support.ContextRegistry.GetContext();break;}else{System.Threading.Thread.Sleep(1000);}等待spring.root初始化完成之后再使用。
小跳酱酱
2018-07-26 · TA获得超过3304个赞
知道大有可为答主
回答量:1663
采纳率:87%
帮助的人:1080万
展开全部
一个普通类实现了BeanFactoryPostProcessor,在里面调用了一个bean,结果bean中的还需要Spring注入一个类,结果空指针,单测没有问题。类摘要如下:

public class A implements BeanFactoryPostProcessor{

@Override
public void postProcessBeanFactory(ConfigurableListableBeanFactory factory) throws BeansException{

……很多操作省略

((B)factory.getBean("B")).xxx();
}
}

@Component
public class B{

@Autowired
@Qualifier("C")
private C c;

public void xxx(){
// 单元测试中注掉A类中最后那句跑OK,但是启动服务就不行,包空指针
c.yyy();

}

}

上述问题,初步估计是Spring容器没有初始化完成。逻辑实现的目的是想在Spring加载完成后执行某些方法。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式