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);

    }

  • 相关阅读:
    vue中引用font-awesome
    创建VUE项目
    Core项目添加EF
    DBHelper,之前常用的代码,保存起来。
    appium+python的APP自动化(2)
    appium+python的APP自动化(1)
    单例模式
    双重检测机制解决缓存穿透问题
    mysql数据库
    java的三大特性----封装、集成、多态
  • 原文地址:https://www.cnblogs.com/zhongchang/p/11944502.html
Copyright © 2011-2022 走看看