面试题框架篇

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一二级缓存

相关推荐
风样滴男人哟4 分钟前
PHP特性之反射类ReflectionClass机制
android·开发语言·php
极客先躯16 分钟前
高级java每日一道面试题-2026年05月11日-实战篇[Docker]-如何容器化金融产品推荐系统?
java·运维·docker·容器·金融·高级面试·金融产品推荐系统
看昭奚恤哭17 分钟前
Flutter 布局核心思想
开发语言·javascript·flutter
朱容zr33313332 分钟前
为什么推荐使用自增主键?使用UUID作为主键的优缺点是什么?
java·运维·数据库·后端·mysql·面试·性能优化
IsSh9nj6q1 小时前
Python全栈应用搭建神器magic-dash .新版本介绍
开发语言·python·dash
知彼解己1 小时前
Eclipse Temurin:企业级 Java JDK 发行版的最佳实践
java·ide·eclipse
NutShell Wang1 小时前
Vite 8.1 深度拆解:Rolldown 统一打包器如何终结前端构建的「双引擎时代」
前端·rust·开源·vite·开发者工具·vibe coding
朱容zr3331331 小时前
请解释“回表”的概念。
java·前端·数据库
不吃辣4901 小时前
vibe coding | 如何做一个 AI 音乐生成工具?
java·人工智能·后端·ai·ai编程
Cachel wood1 小时前
hands-on-modern-rl:动手学强化学习策略梯度reinforce
开发语言·python