做淘宝类网站,住建厅报名考试入口,wordpress 获取标签所有文章,网站搜什么关键词Spring 框架中都用到了哪些设计模式?(必会)
1. 工厂模式#xff1a;BeanFactory 就是简单工厂模式的体现#xff0c;用来创建对象的实例
2. 单例模式#xff1a;Bean 默认为单例模式
3. 代理模式#xff1a;Spring 的 AOP 功能用到了 JDK 的动态代理和 CGLIB 字节码生成…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的面试题未来还会继续分享相关资料。笔者小中大厂均有面试经验每日分享全栈知识希望和大家共同进步。