当前位置: 首页 > news >正文

面试题分享--Spring02

Spring 框架中都用到了哪些设计模式?(必会)

1. 工厂模式:BeanFactory 就是简单工厂模式的体现,用来创建对象的实例

2. 单例模式:Bean 默认为单例模式

3. 代理模式:Spring 的 AOP 功能用到了 JDK 的动态代理和 CGLIB 字节码生成技术

4. 模板方法 :用来解决代码重 复的问题。比如. RestTemplate, JmsTemplate, JpaTemplate

5. 观察者模式:定义对象键一种一对多的依赖关系,当一个对象的状态发生改变时, 所 有 依 赖 于 它 的 对 象 都 会 得 到 通 知 被 制 动 更 新 , 如 Spring 中 listener 的 实 现 --ApplicationListener

Spring 事务的实现方式和实现原理(必会)

Spring 事务的本质其实就是数据库对事务的支持,没有数据库的事务支持,spring 是 无法提供事务功能的。真正的数据库层的事务提交和回滚是通过 binlog 或者 redo log 实 现的。 spring 事务实现主要有两种方法

1、编程式,beginTransaction()、commit()、rollback()等事务管理相关的方法

2、声明式,利用注解 Transactional 或者 aop 配置

你知道的 Spring 的通知类型有哪些,分别在什么时候执行?(了解)

Spring 的通知类型有四种,分别为:

前置通知[]before]:在切点运行之前执行

后置通知[after-returning]:在切点正常结束之后执行

异常通知[after-throwing]:在切点发生异常的时候执行

最终通知[after]:在切点的最终执行

Spring 还有一种特殊的通知,叫做环绕通知49 环绕通知运行程序员以编码的方式自己定义通知的位置, 用于解决其他通知时序 问题

Spring 的对象默认是单例的还是多例的? 单例 bean 存不存在线程安全问 题呢?(必会)

1. 在 spring 中的对象默认是单例的,但是也可以配置为多例。

2. 单例 bean 对象对应的类存在可变的成员变量并且其中存在改变这个变量的线程时, 多线程操作该 bean 对象时会出现线程安全问题。

原因是:多线程操作如果改变成员变量,其他线程无法访问该 bean 对象,造成数据混 乱。

解决办法:在 bean 对象中避免定义可变成员变量; 在 bean 对象中定义一个 ThreadLocal 成员变量,将需要的可变成员变量 保存在 ThreadLocal 中。

@Resource 和@Autowired 依赖注入的区别是什么?@Qualifier 使用场 景是什么?(了解)

@Resource

只能放在属性上,表示先按照属性名匹配 IOC 容器中对象 id 给属性注入值若没有 成功,会继续根据当前属性的类型匹配 IOC 容器中同类型对象来注入值 若指定了 name 属性@Resource(name = "对象 id"),则只能按照对象 id 注入值。

@Autowird

放在属性上:表示先按照类型给属性注入值如果 IOC 容器中存在多个与属性同类 型的对象,则会按照属性名注入值 也可以配合@Qualifier

@Qualifier("IOC 容器中对象 id")注解直接按照名称注入值。

放在方法上:表示自动执行当前方法,如果方法有参数,会自动从 IOC 容器中寻 找同类型的对象给参数传值 也可以在参数上添加@Qualifier("IOC 容器中对象 id")注解按照名称寻找对象给 参数传值。 @Qualifier 使用场景: @Qualifier("IOC 容器中对象 id")可以配合@Autowird 一起使用, 表示根据指定 的 id 在 Spring 容器中匹配对象

写在最后

本篇分享了四道Spring的面试题,未来还会继续分享相关资料。笔者小,中,大厂均有面试经验,每日分享全栈知识,希望和大家共同进步。

http://www.lryc.cn/news/375784.html

相关文章:

  • 基于QT和C++实现的中国象棋
  • Mojo崛起:AI-first 的编程语言能否成为新流行?
  • 【数据结构与算法】哈夫曼树与哈夫曼编码
  • 基于多头注意力机制卷积神经网络结合双向门控单元CNN-BIGRU-Mutilhead-Attention实现柴油机故障诊断附matlab代码
  • k8s redis 单节点部署
  • 科普童话投稿
  • 【Ardiuno】使用ESP32单片机创建web服务通过网页控制小灯开关的实验(图文)
  • 百元蓝牙耳机哪款音质最好?四款实力超群机型推荐
  • Linux系统之mtr命令的基本使用
  • 实战tcpdump4.99.4交叉编译
  • 重生奇迹MU召唤术师简介
  • 神经网络模型---AlexNet
  • corona渲染器与vray比哪个好?支持云渲染平台吗
  • 每日一练:攻防世界:Ditf
  • 约瑟夫环递归算法详解与实现
  • 互联网应用主流框架整合之构建REST风格的系统
  • vue3-自定义指令来实现input框输入限制
  • MySQL日志——redolog
  • Python热涨落流体力学求解算法和英伟达人工智能核评估模型
  • 【C语言】数组参数和指针参数详解
  • Tuple 元组
  • (资料收藏)王阳明传《知行合一》共74讲,王阳明知行合一音频讲解资料
  • 空气质量预报模式系统WRF-CMAQ
  • Collections.sort()方法总结
  • Java23种设计模式(二)
  • Web前端收入来源:探索多元化的盈利渠道
  • 抽象工厂模式(大话设计模式)C/C++版本
  • springboot宠物医院信息管理系统-计算机毕业设计源码04164
  • Leetcode Hot100之哈希表
  • Vision Transformer with Sparse Scan Prior