如何在创建 XML ApplicationContext 时使用自定义 Namespace HandlerResolver?

How to use custom NamespaceHandlerResolver when creating XML ApplicationContext?

我想在从 xml 创建 spring 应用程序上下文时使用自定义 NamespaceHandlerResolver

仅 spring 文档 explains how to create custom NamespaceHandler。但是我需要使用专门初始化的 NamespaceHandlerResolver 来获得我需要正确初始化的 NamespaceHandlerNamespaceHandler 是上下文相关的)。

那么在创建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;
    }
}