【问题标题】:How to use custom NamespaceHandlerResolver when creating XML ApplicationContext?创建 XML ApplicationContext 时如何使用自定义 NamespaceHandlerResolver?
【发布时间】:2016-01-09 19:31:37
【问题描述】:

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

spring文档只有explains如何创建自定义NamespaceHandler。但我需要使用专门初始化的NamespaceHandlerResolver 才能获得我需要正确初始化的NamespaceHandlers(NamespaceHandlers 取决于上下文)。

那么在创建xml applicationcontext的时候,如何设置自定义的NamespaceHandlerResolver呢?

【问题讨论】:

    标签: java spring applicationcontext


    【解决方案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;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-11
      • 1970-01-01
      • 1970-01-01
      • 2020-11-29
      • 2018-02-02
      • 1970-01-01
      相关资源
      最近更新 更多