面试题框架篇

Spring框架中的单例bean是线程安全的吗

不是

Spring框架并没有对单例bean进行任何多线程的封装处理 关于单例bean的线程安全和并发问题 需要开发者自行去确定

通常项目里边使用的springbean都是不可改变的 某种程度上来说 spring单例的bean是线程安全的

如果你的bean有多种状态的话 就需要自行保证线程安全 最简单的办法就是将多态bean有singleton改成prototype

什么AOP

面向切面编程

抽取公共模块 降低耦合 提高代码的复用

一般可以做公共日志保存 事务处理

项目中有没有使用AOP

后台管理系统就是使用aop来记录了系统的操作日志

主要思路是这样的 使用aop 中的环绕通知+切点表达式

Spring中的事务是如何实现的

本质上就是通过aop完成的 对方法前后进行拦截 在执行方法之前开启事务 在执行完目标方法之后 提交或者回滚事务

事务失效的场景

比如方法上异常捕获处理 自己处理了异常 没有抛出 就会导致事务失效 所以一般处理了异常以后 别忘了抛出去

还有如果方法抛出检查异常 如果报错也会导致事务失效

还有如果方法上不是public修饰的 也会导致事务失效

Spring的bean的生命周期

首先BeanDefinition类获取bean的定义信息

里边封装了bean的所有信息 比如类的全路径 是否言辞加载 是否是单例这些

创建bean的时候 第一步 调用构造函数实例化bean

第二步 bean依赖注入

3 处理Aware接口

4 bean的后置处理器

5 初始化方法 实现了接口IntializingBean

6 执行了bean的后置处理器 BeanPostProcessor

最后就是销毁bean

Spring中的循环引用

A依赖于B B依赖于A

循环依赖在Spring是允许存在的 spring框架依据三级缓存已经解决了大部分的循环依赖

构造方法出现了循环依赖

j太多了 先不看了 也不是特别的重点

SpringMVC执行流程

东西居多

Spring自动装配原理

Spring常见注解

SpringMVC常见注解

Springboot常见注解

MyBatis执行流程

Mybatis的延迟加载底层逻辑

Mybatis一二级缓存

相关推荐
shmily麻瓜小菜鸡8 分钟前
前端“伪防盗链”方案
前端·javascript·vue.js·bootstrap·echarts
mayaairi8 分钟前
JS数组完全指南(含十大操作详解)
开发语言·前端·javascript
j7~11 分钟前
【数据结构初阶】队列的实现(链式队列 + 循环队列)--详解
c语言·开发语言·数据结构·学习·队列·queue·c\c++
RuoyiOffice20 分钟前
超级个体接私活必看:后端+前端+移动端三端一体企业管理系统怎么选(2026)
java·spring boot·vue·uniapp·全栈·企业管理·接私活
king_linlin28 分钟前
算法基础——算法复杂度
c语言·开发语言·数据结构·算法
IT_陈寒29 分钟前
Python的线程池把我CPU跑满了,原来少传了个参数
前端·人工智能·后端
二十雨辰29 分钟前
[爬虫]-解析
开发语言·python
zzq779735 分钟前
Android 16 API 36 升级后 APP 加固兼容性问题解析
android·开发语言·安全·kotlin·安卓·安全架构
喜欢的名字被抢了37 分钟前
写-Chrome-扩展时踩过的那些-MV3-的坑
前端·chrome
java1234_小锋43 分钟前
【免费】基于Spark实时电商用户行为分析与预测(Java版本+可视化大屏+Kafka+SpringBoot+Vue3) 锋哥原创出品,必属精品
java·spark·kafka·实时电商用户行为分析与预测系统