如何在创建 XML ApplicationContext 时使用自定义 Namespace HandlerResolver?
How to use custom NamespaceHandlerResolver when creating XML ApplicationContext?
我想在从 xml 创建 spring 应用程序上下文时使用自定义 NamespaceHandlerResolver
。
仅 spring 文档 explains how to create custom NamespaceHandler
。但是我需要使用专门初始化的 NamespaceHandlerResolver
来获得我需要正确初始化的 NamespaceHandler
(NamespaceHandler
是上下文相关的)。
那么在创建xmlapplicationcontext时,如何设置自定义NamespaceHandlerResolver
?
需要创建从 org.springframework.context.support.AbstractXmlApplicationContext
and must override 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;
}
}
我想在从 xml 创建 spring 应用程序上下文时使用自定义 NamespaceHandlerResolver
。
仅 spring 文档 explains how to create custom NamespaceHandler
。但是我需要使用专门初始化的 NamespaceHandlerResolver
来获得我需要正确初始化的 NamespaceHandler
(NamespaceHandler
是上下文相关的)。
那么在创建xmlapplicationcontext时,如何设置自定义NamespaceHandlerResolver
?
需要创建从 org.springframework.context.support.AbstractXmlApplicationContext
and must override 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;
}
}