Spring其它知识点

33.Spring 源码用到了哪些设计模式?

  1. 工厂模式:通过BeanFactory或者ApplicationContext创建Bean对象。BeanFactory是延迟注入,使用到Bean的时候才注入。ApplicationContext是在容器启动时,一次性创建所有的Bean。
  2. 单例模型:一类对象只能有一个实例,比如线程池、缓存、注册表和日志对象等。单例Bean可以节省对象创建的空间,Spring Bean默认的作用域就是单例Bean。
  3. 代理模式,AOP就是使用的代理设计模式,将那些与业务无关,却被业务共同调用的模块封装起来。减少重复代码,降低模块间的耦合。
  4. 观察者模式,是一种对象行为型模式。它表示的是一种对象与对象之间具有依赖关系,当一个对象发生改变的时候,依赖这个对象的所有对象也会做出反应。比如我们每次添加商品的时候都需要重新更新商品索引,这个时候就可以利用观察者模式来解决这个问题。

34.Spring如何处理线程并发的问题?

Spring默认的Bean作用域是单例,多个线程同时操作同一个Bean实例。若Bean包含可变成员变量,可能引发线程安全问题。通常又三种解决方案:

  1. 将Bean设计为无状态(推荐),不保存可变成员变量,仅通过方法参数或局部变量处理数据,此时单例Bean是线程安全的。
  2. 使用@Scope注解指定作用域为原型,每次请求Bean时创建新实例,避免多线程共享同一实例。
  3. 通过ThreadLocal为每个线程保存变量副本,确保线程隔离。
  4. 使用Synchronized同步锁控制并发访问,性能低。
相关推荐
花花鱼1 天前
Spring Security 与 Spring MVC
java·spring·mvc
oak隔壁找我1 天前
SpringBoot 将项目打包成 Fat JAR(肥包),核心原理
后端
言慢行善1 天前
sqlserver模糊查询问题
java·数据库·sqlserver
专吃海绵宝宝菠萝屋的派大星1 天前
使用Dify对接自己开发的mcp
java·服务器·前端
大数据新鸟1 天前
操作系统之虚拟内存
java·服务器·网络
Tong Z1 天前
常见的限流算法和实现原理
java·开发语言
凭君语未可1 天前
Java 中的实现类是什么
java·开发语言
He少年1 天前
【基础知识、Skill、Rules和MCP案例介绍】
java·前端·python
克里斯蒂亚诺更新1 天前
myeclipse的pojie
java·ide·myeclipse