zoukankan      html  css  js  c++  java
  • Spring NamespaceHandlerResolver xml的标签加载的扩展 和 ApplicationContext

    NamespaceHandlerResolver

    public NamespaceHandler resolver(String namespaceUri);

    DefaultNamespaceHandlerResolver返回执行标签解析的 NamespaceHandler对象

    DefaultNamespaceHandlerResolver implements NamespaceHandlerResolver 

    default_handler_mappings_location = "META-INF/spring.handlers";

    spring.handlers文件的配置使用的NamespaceHandler对象

    http://www.springframework.org/schema/aop=cn.tk.***.aop.config.AopNamespaceHandler

     

    AopNamespaceHandler extends NamespaceHandlerSupport

    执行注册 BeanDefinitionParser 对象

    public void init(){

        registrerBeanDefinitionParser("config", new ConfigBeanDefinitionParser());

    }

    AOP标签的解析交给ConfigBeanDefinitionParser对象解析

    ApplicationContext

    ClassPathXmlApplicationContext --> AbstractXmlApplicationContext --> AbstratcRefreshableConfigApplicationContext --> 

    AbstractRefreshableApplicationContext --> AbstractApplicationContext

    AbstractApplicationContext 中 refresh()方法

    public void refresh() {

    prepareRefresh();

    获取BeanFactory  

    AutowireCapableBeanFactory beanFactory = obtainFreshBeanFactory();

    执行 BeanFactoryPostProcessor 和 BeanDefinitionRegistryPostProcessor

    registerBeanPostProcessors(beanFactory);

    执行Bean的getBean()方法

    finishBeanFactoryInitialization(beanFactory);

    }

  • 相关阅读:
    【动态规划】最长公共子序列与最长公共子串
    【图论】深入理解Dijsktra算法
    webSocket基本知识
    React的合成事件
    mobx的实现原理
    js自定义事件
    React16废弃的生命周期和新的生命周期
    正则表达式基本概念
    webpack异步加载文件的方式
    React.lazy懒加载组件
  • 原文地址:https://www.cnblogs.com/zhongchang/p/11944502.html
Copyright © 2011-2022 走看看