面试题分享--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的面试题,未来还会继续分享相关资料。笔者小,中,大厂均有面试经验,每日分享全栈知识,希望和大家共同进步。

相关推荐

  1. 面试分享--Spring02

    2024-06-15 16:38:03       10 阅读
  2. 面试-02

    2024-06-15 16:38:03       26 阅读
  3. Spring MVC面试系列-02

    2024-06-15 16:38:03       18 阅读
  4. Spring Boot面试系列-02

    2024-06-15 16:38:03       22 阅读
  5. Spring-面试

    2024-06-15 16:38:03       37 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-15 16:38:03       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-15 16:38:03       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-15 16:38:03       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-15 16:38:03       18 阅读

热门阅读

  1. win10下使用docker和VMware

    2024-06-15 16:38:03       8 阅读
  2. Android 14 蓝牙主从模式切换

    2024-06-15 16:38:03       8 阅读
  3. C# —— 位运算符

    2024-06-15 16:38:03       5 阅读
  4. vim 存在三种模式:

    2024-06-15 16:38:03       5 阅读
  5. k8s_探针专题

    2024-06-15 16:38:03       7 阅读
  6. 行为型-观察者模式(Observer)

    2024-06-15 16:38:03       9 阅读
  7. 递归下降解析器在Python中的实现与应用

    2024-06-15 16:38:03       5 阅读