美文网首页
Spring 加载xml注册Bean流程

Spring 加载xml注册Bean流程

作者: 王兴岭 | 来源:发表于2020-06-11 16:52 被阅读0次
  1. ClassPathXmlApplicationContext 加载XML
  2. 加载所有的自定义NamespaceHandler比如
public class TxNamespaceHandler extends NamespaceHandlerSupport {

    static final String TRANSACTION_MANAGER_ATTRIBUTE = "transaction-manager";

    static final String DEFAULT_TRANSACTION_MANAGER_BEAN_NAME = "transactionManager";


    static String getTransactionManagerName(Element element) {
        return (element.hasAttribute(TRANSACTION_MANAGER_ATTRIBUTE) ?
                element.getAttribute(TRANSACTION_MANAGER_ATTRIBUTE) : DEFAULT_TRANSACTION_MANAGER_BEAN_NAME);
    }


    @Override
    public void init() {
        registerBeanDefinitionParser("advice", new TxAdviceBeanDefinitionParser());
        registerBeanDefinitionParser("annotation-driven", new AnnotationDrivenBeanDefinitionParser());
        registerBeanDefinitionParser("jta-transaction-manager", new JtaTransactionManagerBeanDefinitionParser());
    }

}
  1. 解析xml节点
    4.如果遇到自定义节点交给自定义节点解析器BeanDefinitionParser的子类比如
<tx:annotation-driven transaction-manager="txManager"/>

命名空间是tx,对应的处理器类就是TxNamespaceHandler,annotation-driven就由AnnotationDrivenBeanDefinitionParser解析
命名比较有规律比如节点中的tx就是转大驼峰Tx后面跟NamespaceHandler`

  1. 在解析element的parse方法中注册RootBeanDefinition到容器DefaultListableBeanFactory

相关文章

网友评论

      本文标题:Spring 加载xml注册Bean流程

      本文链接:https://www.haomeiwen.com/subject/umibtktx.html