Bohr-L Bohr-L
首页
技术
常见面试题
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

刘博

I'm a slow walker, But I never walk backwards.
首页
技术
常见面试题
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 数据处理与存储类

  • Spring 生态类

    • SpringBoot 自动装配的原理
    • SpringMVC 的优点和缺点
      • Spring AOP 在什么场景下会失效?
      • Spring 是如何管理事务的,事务管理机制
      • 声明式事务的实现原理(AOP)
    • 缓存问题类

    • 多线程类

    • JVM 类

    • MySQL 类

    • Java 8 + 特性类

    • 其他技术类

    • 常见面试题
    • Spring 生态类
    刘博
    2025-12-28
    目录

    SpringMVC 的优点和缺点

    # 优点

    • 1. 松耦合,职责清晰:基于 MVC 分层设计,Controller(请求处理)、Service(业务逻辑)、DAO(数据访问)职责分离,代码可维护性强。
    • 2. 灵活的 URL 映射:通过@RequestMapping(或@GetMapping/@PostMapping)注解,支持多种 URL 匹配规则(如路径参数/user/{id}、通配符/user/*),可灵活映射请求到 Controller 方法。
    • 3. 强大的参数绑定与校验:支持自动将请求参数(URL 参数、表单参数、JSON 参数)绑定到 Controller 方法的参数(如@RequestParam、@RequestBody),结合 JSR-380(如@NotNull、@Size)可实现参数校验,减少重复代码。
    • 4. 丰富的视图支持:支持 JSP、Thymeleaf、FreeMarker 等多种视图技术,也可通过@ResponseBody直接返回 JSON/XML,适配前后端分离架构。
    • 5. 集成 Spring 生态:无缝集成 Spring 的 IOC、AOP、事务管理等功能,可直接使用@Autowired注入 Bean,无需额外配置。
    • 6. 拦截器机制:通过实现HandlerInterceptor接口,可在请求处理前(preHandle)、处理后(postHandle)、视图渲染后(afterCompletion)插入自定义逻辑(如登录验证、日志记录),扩展性强。

    # 缺点

    • 1. 配置相对复杂(对比 SpringBoot):传统 SpringMVC 需配置DispatcherServlet(web.xml 或 JavaConfig)、视图解析器、拦截器等,配置项较多;虽可通过注解简化,但仍比 SpringBoot 的 “零配置” 繁琐。
    • 2. 对异步支持较弱(早期版本):SpringMVC 3.x 及之前对异步请求(如长轮询、WebSocket)支持不足,需通过复杂配置实现;虽 4.x 后引入@Async和DeferredResult,但对比 Spring WebFlux(响应式编程)仍不够灵活。
    • 3. 前端依赖较强(传统模式):传统 SpringMVC 需结合视图技术(如 JSP),前后端代码耦合度较高;虽支持前后端分离,但需手动处理 JSON 序列化 / 反序列化,不如 SpringBoot+SpringMVC 的默认配置便捷。
    • 4. 学习成本(对新手):需理解 MVC 流程、拦截器、参数绑定、视图解析等概念,新手入门需一定时间;对比轻量级框架(如 FastAPI、Flask),学习曲线较陡。

    上次更新: 12/30/2025
    SpringBoot 自动装配的原理
    Spring AOP 在什么场景下会失效?

    ← SpringBoot 自动装配的原理 Spring AOP 在什么场景下会失效?→

    最近更新
    01
    CPU 使用率较高排查和解决
    12-29
    02
    JVM OOM 问题如何排查和解决
    12-29
    03
    接口防刷怎么实现?
    12-29
    更多文章>
    Theme by Vdoing | Copyright © 2025-2026 Bohr-L's note
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式