
怎么判断spring容器加载完成
展开全部
查看所指定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初始化完成之后再使用。
常见的使用方式:
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初始化完成之后再使用。
展开全部
一个普通类实现了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加载完成后执行某些方法。
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加载完成后执行某些方法。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询