说一下 spring 的事务隔离?说一下 spring mvc 运行流程?spring mvc 有哪些组件?

说一下 spring 的事务隔离?

Spring中的事务隔离(Transaction Isolation)指的是在并发情况下,多个事务之间的隔离程度。通常会出现以下4种类型的事务隔离级别:

  1. 未提交读(Read Uncommitted):事务可以读取未提交的数据,可能导致脏读(Dirty Read)、不可重复读(Non-Repeatable Read)和幻读(Phantom Read)的问题。

  2. 提交读(Read Committed):事务只能读取已提交的数据,可以避免脏读的问题,但仍可能出现不可重复读和幻读的问题。

  3. 可重复读(Repeatable Read):事务在执行期间多次读取同一数据时,能够保证读取到的数据是一致的,避免了不可重复读的问题。但仍可能出现幻读的问题。

  4. 串行化(Serializable):事务串行执行,避免了脏读、不可重复读和幻读的问题,但性能较差,一般不常用。

在Spring中,可以通过@Transactional注解或XML配置文件来设置事务的隔离级别。默认的事务隔离级别是可重复读。

@Transactional(isolation = Isolation.READ_COMMITTED) public void transactionalMethod() { // 事务操作 }

<tx:advice id="txAdvice" transaction-manager="transactionManager"> <tx:attributes> <tx:method name="transactionalMethod" isolation="READ_COMMITTED" /> </tx:attributes> </tx:advice>

事务隔离级别越高,数据的一致性和安全性越高,但并发性能越差。开发者需要在保证数据的完整性和安全性的前提下,根据实际业务需求和系统压力选择适合的事务隔离级别。

说一下 spring mvc 运行流程?

Spring MVC 是 Spring 框架中用于构建 Web 应用程序的一部分,其主要作用是处理用户请求并返回响应。下面是 Spring MVC 的运行流程,包括请求到达服务器后的处理过程:

  1. 用户发送请求

    • 用户通过浏览器或其他客户端向服务器发送请求,请求到达服务器后由前端控制器(DispatcherServlet)接收。
  2. DispatcherServlet 接收请求

    • DispatcherServlet 是整个 Spring MVC 的核心,它接收所有请求并将请求交给其他组件进行处理。
  3. HandlerMapping 寻找处理器

    • DispatcherServlet 通过 HandlerMapping 找到对应的处理器(Controller),HandlerMapping 根据请求的 URL 映射到具体的 Controller。
  4. Controller 处理请求

    • Controller 是实际处理请求的地方,根据请求的内容调用业务逻辑处理数据,通常会返回一个 ModelAndView 对象,其中包含视图名称和模型数据。
  5. Model 数据准备

    • Controller 准备处理请求所需的数据,并把数据存放在 Model 中,以便在视图中展示。
  6. ViewResolver 解析视图

    • ViewResolver 将逻辑视图名称解析为真正的视图资源,通常是 JSP、Thymeleaf、Freemarker 等模板引擎。
  7. 视图渲染

    • 最终选定的视图被用来渲染响应结果,将处理后的数据呈现给用户。
  8. 返回响应

    • 渲染后的视图作为响应返回给用户,用户在浏览器中看到了相应的页面内容。

这个流程描述了当用户发送请求时,Spring MVC 是如何处理请求并生成响应的。在具体开发中,可以通过配置各种组件(如拦截器、视图解析器等)来定制和扩展 Spring MVC 的功能,以满足不同的需求和场景。

spring mvc 有哪些组件?

Spring MVC 框架包含以下几个主要组件,每个组件都有不同的作用和责任:

  1. DispatcherServlet

    • DispatcherServlet 是整个 Spring MVC 的核心,它充当前端控制器的角色,接收用户请求并将请求分发给其他组件进行处理。它负责调用适当的处理器来处理请求,并协调整个请求处理过程。
  2. HandlerMapping

    • HandlerMapping 用于根据请求的 URL 映射到具体的处理器(Controller)。它根据配置的映射规则,将请求分派给相应的 Controller 进行处理。常用的 HandlerMapping 实现包括注解驱动的 RequestMappingHandlerMapping 和基于 XML 配置的 SimpleUrlHandlerMapping
  3. HandlerAdapter

    • HandlerAdapter 是处理器适配器,负责将特定的处理器(Controller)适配为一个可执行的处理链。它根据处理器的类型选择合适的执行方式,并帮助执行器执行请求处理方法。常用的 HandlerAdapter 实现包括注解驱动的 RequestMappingHandlerAdapter 和基于 XML 配置的 SimpleControllerHandlerAdapter
  4. Controller

    • Controller 是实际处理请求的组件,用于接收用户请求并处理业务逻辑。它包含一个或多个请求处理方法,这些方法根据请求的内容执行相应的逻辑,并返回 ModelAndView 对象或其他类型的响应。
  5. ModelAndView

    • ModelAndView 是一个包含视图名称和模型数据的对象。Controller 处理请求后,通常会将处理结果放入到 ModelAndView 中,然后返回给 DispatcherServlet,最终由 ViewResolver 解析视图并进行渲染。
  6. ViewResolver

    • ViewResolver 用于将逻辑视图名称解析为真正的视图资源,它根据配置的规则找到对应的视图,如 JSP、Thymeleaf、Freemarker 等模板引擎。ViewResolver 负责渲染视图,并将最终的视图结果返回给客户端。
  7. View

    • View 是最终呈现给用户的视图组件,它负责将模型数据渲染成具体的页面内容。不同的视图技术有不同的实现方式,例如 JSP、Thymeleaf 等。
  8. HandlerInterceptor

    • HandlerInterceptor 是拦截器接口,用于在请求处理过程中进行预处理和后处理。它可以在请求被处理前和处理后执行自定义的逻辑,例如日志记录、权限验证等。

以上是 Spring MVC 框架的主要组件,它们共同协作来处理用户请求、执行业务逻辑并生成响应结果。通过灵活配置和扩展这些组件,可以满足不同的需求和场景。

  • 36
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值