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

标签 java spring applicationcontext

我想使用自定义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/

相关文章:

java - 如何在 javacv 中访问 CvSeq 中的一个点?

java - @OneToOne 和 @JoinColumn 只保存 UUID 而不是整个对象

java - 在 bean 中同时使用 RolesAllowed 和 Transactional

spring - 在 Spring MVC 中使用 ApplicationContext。

java - Spring中如何构造Map<String, List<String>>数据结构

java - Spring 中的单例与 Autowired 字段

java - com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException - jackson 图书馆

java - 红黑树需要两次遍历

java - 在 eclipse 中创建应用程序 : Error parsing XML: not well-formed (invalid token)

java - 如何使用 Spring 安全性和 Restful Web 服务验证数据库中的凭据?