我想在从xml创建spring应用程序上下文时使用自定义NamespaceHandlerResolver
。
仅限Spring文档explains如何创建自定义NamespaceHandler
。但是我需要使用一个专门初始化的NamespaceHandlerResolver
来获取我需要使用的NamespaceHandler
正确初始化(NamespaceHandler
s依赖于上下文。)
因此,在创建xml applicationcontext时,如何设置自定义NamespaceHandlerResolver
?
答案 0 :(得分:1)
需要创建一个源自org.springframework.context.support.AbstractXmlApplicationContext
的应用程序上下文,并且必须覆盖initBeanDefinitionReader(XmlBeanDefinitionReader reader)
。覆盖应将自定义NamespaceHandlerResolver
设置为reader
实例。
import org.springframework.beans.factory.xml.NamespaceHandlerResolver;
import org.springframework.beans.factory.xml.XmlBeanDefinitionReader;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class CustomNamespaceHandlerClassPathXmlApplicationContext extends ClassPathXmlApplicationContext {
private NamespaceHandlerResolver customNamespaceHandlerResolver;
@Override
protected void initBeanDefinitionReader(XmlBeanDefinitionReader reader) {
super.initBeanDefinitionReader(reader);
reader.setNamespaceHandlerResolver(customNamespaceHandlerResolver);
}
public void setCustomNamespaceHandlerResolver(
NamespaceHandlerResolver customNamespaceHandlerResolver) {
this.customNamespaceHandlerResolver = customNamespaceHandlerResolver;
}
}