zoukankan      html  css  js  c++  java
  • 自定义xml spring bean

    一. xml中bean解析过程

    扫描META-INF下面的

    spring.schemas  bean定义对应的xsd位置,在IDEA中可以辅助校验)

    spring.handlers   xmlns对应的bean具体解析器, 一般会继承NamespaceHandlerSupport,

    NSHandler下面是具体解析过程, 最终返回的结果是spring中的BeanDefinition

    参见<dubbo:config> <hsf:provider> <mvc:annotation-driven>的解析过程

    二. 注解形式的自定义bean

    BeanDefinitionRegistryPostProcessor

    mybatis中的bean注解扫描过程, ===> mapper接口为何可以使用Autowire自动注入

    扫描包下的所有类都会创建成对应的MapperFactoryBean对象,同时继承了FactoryBean, 在spring容器getBean时调用FactoryBean的getObject方法,生成mapper的proxy对象

    @Import(MapperScannerRegistrar.class)
    public @interface MapperScan

    如果使用了MapperScan,就会使用MapperScannerRegistrar.class扫描mapperScan定义的包名, 在里面创建mapper对应的MapperFactoryBean


    @Import({ AutoConfiguredMapperScannerRegistrar.class })
    @ConditionalOnMissingBean(MapperFactoryBean.class)
    public static class MapperScannerRegistrarNotFoundConfiguration

    如果没有使用MapperScan, 使用的是org.mybatis.spring.boot.autoconfigure.MybatisAutoConfiguration.MapperScannerRegistrarNotFoundConfiguration上面import引入的AutoConfiguredMapperScannerRegistrar来扫描基础包名
    注意这个注解@ConditionalOnMissingBean


    resources下面的mapper.xml是什么时候加载进去的?
    MybatisAutoConfiguration里面sessionFactory初始化时 factory.setMapperLocations(this.properties.resolveMapperLocations());

  • 相关阅读:
    < java.util >-- Set接口
    Codeforces 627 A. XOR Equation (数学)
    Codeforces 161 B. Discounts (贪心)
    Codeforces 161 D. Distance in Tree (树dp)
    HDU 5534 Partial Tree (完全背包变形)
    HDU 5927 Auxiliary Set (dfs)
    Codeforces 27E. Number With The Given Amount Of Divisors (暴力)
    lght oj 1257
    Codeforces 219D. Choosing Capital for Treeland (树dp)
    Codeforces 479E. Riding in a Lift (dp + 前缀和优化)
  • 原文地址:https://www.cnblogs.com/yszzu/p/9183240.html
Copyright © 2011-2022 走看看