悦书阁 悦书阁
首页
学习笔记
技术文档
idea插件开发
更多
  • 分类
  • 标签
  • 归档

Felix

大道至简 知易行难
首页
学习笔记
技术文档
idea插件开发
更多
  • 分类
  • 标签
  • 归档
  • JVM

  • spring

    • Spring Bean 生命周期:从源码到实战
    • Spring Aop
    • Spring循环依赖
    • Spring常见问题
    • 并发编程

    • 消息中间件

    • 微服务

    • 三高架构

    • 学习笔记
    • spring
    liufei379
    2022-06-29
    目录

    Spring常见问题

    # 1.BeanFactory与FactoryBean的区别?


    BeanFactory,IOC容器的核心接口,即Bean工厂,BeanFactory会负责创建Bean,并且提供获取Bean的API。

    FactoryBean:也是一个接口,通过实现FactoryBean接口,可以创建一个我们自己定义的Bean,这个Bean只会经过Spring的Bean生命周期步骤中的初始化后,其他生命周期步骤不会经过。Spring整合Mybatis的时候,就是通过FactoryBean的方式,将Mybatis中的sql对应的接口转化成Spring的Bean对象。

    BeanFactory是个Factory,也就是IOC容器或对象工厂,FactoryBean是个Bean。

    # 2.BeanFactory与ApplicationContext的区别?


    ApplicationContext由BeanFactory派生而来,拥有比BeanFactory更多的功能。

    ApplicationContext extends ListableBeanFactory extends BeanFactory (接口之前的继承)

    1.支持国际化功能。
    2.支持事件机制(发布订阅)。
    3.支持底层资源访问,可以用来加载多个Resource。
    4.支持web应用。
    
    1
    2
    3
    4

    # 3.Spring整合Mybatis后为什么会导致一级缓存失效?


    Mybatis的一级缓存是利用SqlSession实现的,同样的sql,如果在同一个SqlSession执行,就会利用一级缓存,提高查询效率。

    Spring整合Mybatis后,执行方法时,如果方法没有加@Transactional注解,那么方法里面执行sql时,每个sql要执行时都会先生成一个新的SqlSession去执行该sql,所以一级缓存会失效。如果加上@Transactional注解,即开启事务,则同个方法内多个sql使用的是同一个SqlSession,从而一级缓存能生效。

    # 4.Spring事务失效的原因?

    Spring事务是否会失效的判断标准:某个加了@Transactional注解的方法被调用时,要判断到底是不是直接被代理对象调用的,如果是则事务会生效,如果不是则失效。

    上次更新: 2026/3/11 21:47:04
    Spring循环依赖
    深入理解JMM和并发三大特性

    ← Spring循环依赖 深入理解JMM和并发三大特性→

    最近更新
    01
    实现idea开发的关键步骤
    10-05
    02
    Redis高可用架构
    09-09
    03
    Zookeeper高可用
    08-31
    更多文章>
    Theme by Vdoing | Copyright © 2022-2026 Felix | 粤ICP备17101757号-1
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式