我想使用自定义NamespaceHandlerResolver
从 xml 创建 Spring 应用程序上下文时。
仅限 spring 文档 explains如何创建自定义NamespaceHandler
。但我需要使用专门初始化的 NamespaceHandlerResolver
才能获取我需要使用正确初始化的 NamespaceHandler
(NamespaceHandler
与上下文相关) .
那么在创建xml applicationcontext时,如何设置自定义的NamespaceHandlerResolver
呢?
最佳答案
需要创建一个源自 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;
}
}
关于java - 创建XML ApplicationContext时如何使用自定义NamespaceHandlerResolver?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34697960/