hazy的面试小笔记之Spring(持续更新)

最近准备面试,所以会收集一些不懂得题目然后进行答案的搜索,以下答案基本都是来自网络,然后进行了一点删减和自己的总结,如果有侵权,请评论或者私信联系我,我马上删除


Spring 的七种事务传播

这里写图片描述


Spring的单例是怎么实现的?(单例注册表)

答:维护一个单例注册表,即HashMap,key为beanName, value为对应的bean,如果每次查找的都是同一个beanName,就返回同一个bean

如果是多例模式,则每次都生成新的bean并且不注册到单例注册表中

如果是单例模式,在第一次加载bean的时候锁住表并将bean添加到单例注册表中


Spring循环依赖的解决方法

答:如果是构造器的依赖循环,则无法解决

如果是field的依赖循环,spring通过三级缓存进行解决。

举例:“A的某个field或者setter依赖了B的实例对象,同时B的某个field或者setter依赖了A的实例对象”这种循环依赖的情况。

1、A首先完成了初始化的第一步,并且将自己提前曝光到singletonFactories中,此时进行初始化的第二步,发现自己依赖对象B,此时就尝试去get(B),发现B还没有被create,就去找B

2、接下来轮到B初始化,B在初始化第一步的时候发现自己依赖了对象A,于是尝试get(A),尝试一级缓存singletonObjects(肯定没有,因为A还没初始化完全),尝试二级缓存earlySingletonObjects(也没有),尝试三级缓存singletonFactories,由于A通过ObjectFactory将自己提前曝光了,所以B能够通过ObjectFactory.getObject拿到A对象(虽然

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这个错误是由于权限问题导致的。在操作系统中,每个文件和文件夹都有特定的权限设置,决定了谁可以对其进行读取、写入和执行操作。当你尝试访问一个文件或文件夹,如果你没有足够的权限,就会出现"PermissionError: [Errno 13] Permission denied"错误。 解决这个问题的方法有几种: 1. 检查文件或文件夹的权限:首先,你可以检查文件或文件夹的权限设置,确保你有足够的权限来访问它们。你可以使用操作系统提供的命令或图形界面工具来查看和修改权限设置。 2. 以管理员身份运行程序:如果你是在Windows操作系统上运行程序,并且遇到了权限问题,你可以尝试以管理员身份运行程序。右键点击程序的可执行文件,选择"以管理员身份运行"选项。 3. 更改文件或文件夹的所有者:如果你是在Linux或Mac操作系统上运行程序,并且遇到了权限问题,你可以尝试更改文件或文件夹的所有者。使用chown命令可以更改文件或文件夹的所有者,例如: ```shell sudo chown your_username filename ``` 将"your_username"替换为你的用户名,"filename"替换为你要更改所有者的文件或文件夹的路径。 4. 使用sudo命令:如果你是在Linux或Mac操作系统上运行程序,并且遇到了权限问题,你可以尝试使用sudo命令以超级用户身份运行程序。使用sudo命令可以暂提升你的权限,例如: ```shell sudo python your_program.py ``` 将"your_program.py"替换为你要运行的程序的路径。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值