zoukankan      html  css  js  c++  java
  • mybatis

    mybatis源码设计模式

    看源码技巧: 宏观->微观->图解
    mapper有四种形式: resource, url, class, package
    哪种优先级最高: package-> resource -> url -> class

    建造者模式: mybatis初始化参数过多,所有将繁杂的参数封装到一个对象中,利用建造者模式进行初始化

    执行器的3种枚举类型


    默认是使用SIMPLE

    mybatis默认的一级缓存是否开启:开启

    会创建缓存执行器
    openSession实际上是对执行器进行初始化

    Bean的生命周期

    需要有一个class -> BeanDefinition -> BeanFactoryPostProcesor(这个是后置处理器,BeanFactory需要构建,构建后就执行后置处理器) -> 创建实例 new UserService() -> 填充属性 ->
    Aware(将spring生成的beanName回传),实现BeanNameAware接口可以获取到容器生成的beanName
    实现BeanFactoryAware接口可以得到BeanFactory的名称
    -> 初始化 -> APO -> 单例池(Map<BeanName,对象>)

    BeanDefinition

    beanFactory.registerSingleton("XXX",new User()); 可以new一个对象交给spring

    使用FactoryBean的方式

    spring循环依赖

    自己手工new出来的两个相互依赖的对象是不会产生问题的
    spirng中一个对象会经过一系列的bean生命周期才会创建出来,才会出现循环依赖的问题

    循环依赖解决办法

    注入B的A对象和加工后的A对象有可能不是同一个对象

  • 相关阅读:
    Redis的特点什么是?
    Linux---用户和用户管理--用户配置文件
    python---模仿键盘
    Linux---脚本安装包
    python---创建句柄
    python---模仿鼠标悬停 move_to_element/perform/context_click
    python---总结所学元素及方法
    python---关闭 close,quit
    python---截屏
    python---前进和后退 back/forward
  • 原文地址:https://www.cnblogs.com/Baronboy/p/14508239.html
Copyright © 2011-2022 走看看