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

时间:2016-01-09 19:31:37

标签: java spring applicationcontext

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

仅限Spring文档explains如何创建自定义NamespaceHandler。但是我需要使用一个专门初始化的NamespaceHandlerResolver来获取我需要使用的NamespaceHandler正确初始化(NamespaceHandler s依赖于上下文。)

因此,在创建xml applicationcontext时,如何设置自定义NamespaceHandlerResolver

1 个答案:

答案 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;
    }
}