本文首发于cartoon的博客
转载请注明出处:https://cartoonyu.github.io/c...
Spring 自动装配 Bean 有哪些方式?
- no:不使用自动装配
- byName:通过属性名称name自动装配
- byType:通过属性类型装配
- constructor:与byType类似,但会使用构造参数
- autodetect:首先使用constructor,无效后使用byType
- 本人偏向使用java自带注释@Resource,在重构代码会比较方便
Spring 事务实现方式有哪些?
- 编程式事务管理。通过手动控制事务的开启与关闭实现。
- 使用AOP配置事务
- 基于TransactionProxyFactoryBean的声明式事务管理
- 基于 @Transactional的声明式事务管理(推荐)
说一下 Spring 的事务隔离?
事务是一系列操作,结果只有两种
- 操作完成
- 操作异常,回滚造成全部操作被撤销
特性
- 原子性。系统将事务作为一个整体。
- 一致性。事务执行之前与执行之后系统的状态是不变的。
- 隔离性。各事务所使用数据都是确定的值。
- 持久性。事务操作结果被系统保存下来。
隔离级别
- read uncommited:读取事务未提交数据
- read commited:只能读取已提交数据
- repeatable read:允许读取同一条记录
- serializable:事务操作被顺序执行
说一下 Spring MVC 运行流程?
- 网络请求首先到达DispatcherServlet,由DispatcherServlet分发到Controller
- 在分发到Controller前,可能存在Filter过滤
- Controller根据url响应分发请求,并调用Service处理请求
- Service进行业务逻辑处理,并在需要数据库操作时调用Dao进行操作
- Service得到Dao返回结果,进行处理后返回到Controller
- Controller将Service返回结果进行处理,并将结果包装成视图返回到DispatcherServlet
- DispatcherServlet将视图传递到视图渲染器渲染
- 视图渲染器渲染视图,返回页面到前台