数码资讯
在Spring 5中,ContextSingletonBeanFactoryLocator替代
选购提示
关注价格、性能、续航、售后和真实使用场景,理性比较后再下单。
我们使用的是4.2.x版本的
spring,我们正在使用ContextSingletonBeanFactoryLocator来加载bean,如下所示
BeanFactoryLocator bfLocator = ContextSingletonBeanFactoryLocator.getInstance("classpath:customBeanRefFactory.xml");
BeanFactoryReference ref = bfLocator.useBeanFactory("sharedApplicationContext");
BeanFactory beanFactory = ref.getFactory();
((AbstractApplicationContext) beanFactory).getBeanFactory().setBeanClassLoader(CustomSpringBeanFactory.class.getClassLoader());
return (ApplicationContext) beanFactory
我们计划升级到spring 5.0.x并找出ContextSingletonBeanFactoryLocator,并且从Spring 5.0版本中删除类BeanFactoryLocator和BeanFactoryReference之类的类.
那么获取应用程序上下文的建议替代方案是什么?
@Configuration
@ImportResource("classpath:ourxml")
public class OurApplicationConfiguration {
}
public class OurAppicationFactoryProvider {
ApplicationContext context;
public ApplicationContext getApplicationContext() {
if (context == null) {
synchronized (this) {
if (context == null) {
context = new AnnotationConfigApplicationContext(OurApplicationConfiguration.class);
}
}
}
return context;
}
}
这是正确的方法还是有其他选择?
在我的遗留应用程序中,它基于 https://jira.spring.io/browse/SPR-15154中提到的BeanFactoryLocator / beanRefContext.xml机制,我添加了一个Singleton类来创建应用程序上下文并使用该上下文.我的代码是import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public enum SpringContextUtil {
INSTANCE;
ApplicationContext context;
public ApplicationContext getApplicationContext() {
if (context == null)
context = new ClassPathXmlApplicationContext("classpath*:beanRefContext.xml");
return context;
}
}
我换了
final BeanFactoryReference ref = ContextSingletonBeanFactoryLocator.getInstance().useBeanFactory(contextKey);
AbstractApplicationContext context = ((AbstractApplicationContext) ref.getFactory());
通过
AbstractApplicationContext context = (AbstractApplicationContext)SpringContextUtil.INSTANCE.getApplicationContext().getBean(contextKey);
Hopefull可以帮助我的鞋子.
该解决方案可能不适用于所有情况.
声明:本文内容用于数码产品信息整理与选购参考,具体价格、库存、售后政策以官方渠道和电商页面实时信息为准。