当前位置: 首页 > article >正文

【Spring框架 三】

Spring框架 三

  • Spring
    • Web开发框架
      • 框架概述
      • 核心组件
      • RESTful Web Services
      • 异常处理
      • 过滤器和拦截器
    • 总结

Spring

Spring框架是一个开源的Java应用程序框架,它提供了一种轻量级的解决方案,用于开发企业级Java应用程序。Spring框架的核心原则是依赖注入(DI)和面向切面编程(AOP),它使得开发人员可以更加专注于业务逻辑的开发,而无需过多关注底层的技术细节。

Spring框架提供了一系列功能模块,包括:

  1. IOC容器:IOC(Inversion of Control)是Spring框架的核心概念,它通过控制对象的创建和依赖关系的管理,实现了解耦和松耦合的开发。Spring的IOC容器负责管理Java对象的生命周期和依赖关系,并通过依赖注入将依赖关系注入到对象中。

  2. AOP框架:AOP(Aspect-Oriented Programming)是一种编程范式,它通过将横切关注点(例如日志记录、事务管理等)从业务逻辑中分离出来,提供了一种更加模块化和可维护的开发方式。Spring的AOP框架可以将横切关注点织入到应用程序中,并通过提供切面(Aspect)和通知(Advice)来实现。

  3. 数据访问框架:Spring提供了一系列的数据访问模块,包括JDBC、ORM(Object-Relational Mapping)和事务管理等。这些模块可以帮助开发人员简化数据库访问的代码,并提供了对各种数据库的支持。

  4. Web开发框架:Spring提供了一系列的Web开发模块,包括MVC(Model-View-Controller)模式的实现、RESTful Web服务的支持、文件上传等。这些模块可以帮助开发人员快速地构建灵活、可扩展的Web应用程序。

  5. 测试框架:Spring提供了一系列的测试模块,包括对JUnit和Mock对象的支持。这些模块可以帮助开发人员编写单元测试和集成测试,以确保应用程序的质量和稳定性。

在Spring框架一中,我们主要介绍了IOC容器和AOP框架以及数据访问框架,这次我们简要介绍一下Web开发框架。

Web开发框架

Spring Web 框架是 Spring 框架的一部分,主要用于构建基于 HTTP 的应用程序,特别是 Web 应用程序和 RESTful 服务。它是 Spring MVC(Model-View-Controller)模式的实现,并且是构建现代、响应式和可维护的 Web 应用的核心组件之一。

框架概述

Spring Web 框架概述

  1. 定义:Spring Web 框架是一个用于开发 Web 应用程序的轻量级框架,它简化了创建复杂的 Web 应用程序的过程。
  2. 特点:
    • MVC 架构:遵循模型-视图-控制器(MVC)设计模式,使得应用程序的不同方面可以解耦,便于测试和维护。
    • 非侵入性:通过依赖注入(DI)和面向接口编程,减少了代码之间的耦合度。
    • 灵活性:支持多种视图技术(如 JSP、Thymeleaf、FreeMarker 等),并且可以轻松集成其他第三方库和技术。

核心组件

  1. DispatcherServlet
    DispatcherServlet 是 Spring Web 框架的前端控制器,负责接收所有的 HTTP 请求,并将其分发给适当的处理器(Handler)。它还负责处理视图解析、异常处理等任务。在 Spring Boot 中,DispatcherServlet 的配置通常是自动化的,开发者不需要手动配置。

要使用DispatcherServlet需要引入相应的依赖

<servlet>
    <servlet-name>dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>dispatcher</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>
  1. 控制器(Controller)
    控制器负责处理特定类型的请求。在 Spring 中,控制器类通常使用 @Controller 或 @RestController 注解标记,并且方法可以通过 @RequestMapping 及其变体(如 @GetMapping, @PostMapping 等)来映射 URL 路径到具体的处理逻辑。
@RestController
@RequestMapping("/api")
public class MyController {

    @GetMapping("/hello")
    public String sayHello() {
        return "Hello, World!";
    }
}

3 模型(Model)
模型代表应用的数据层,通常是由业务对象组成的。控制器方法可以通过方法参数或返回值来传递模型数据。

4 视图(View)
视图负责将模型数据呈现给用户。Spring 支持多种视图技术,如 JSP、Thymeleaf、FreeMarker 和 Velocity 等。视图解析器(View Resolver)负责选择正确的视图技术并将模型数据传递给视图进行渲染。

@Controller
@RequestMapping("/web")
public class WebController {

    @GetMapping("/home")
    public String home(Model model) {
        model.addAttribute("message", "Welcome to the Home Page!");
        return "home"; // 返回视图名称
    }
}

RESTful Web Services

Spring Web 框架特别适合构建 RESTful Web 服务。@RestController 和 @RequestMapping 注解使得创建 RESTful API 非常简单。此外,Spring 提供了 HttpMessageConverter 接口,它可以自动将 Java 对象转换为 JSON 或 XML 格式的响应体,反之亦然。

@RestController
@RequestMapping("/api/users")
public class UserController {

    @Autowired
    private UserService userService;

    @GetMapping
    public List<User> getAllUsers() {
        return userService.getAllUsers();
    }

    @PostMapping
    public User createUser(@RequestBody User user) {
        return userService.saveUser(user);
    }
}

异常处理

Spring Web 提供了强大的异常处理机制,可以帮助开发者优雅地处理错误情况。你可以使用 @ExceptionHandler 注解的方法来捕获并处理特定类型的异常,或者使用全局异常处理器 @ControllerAdvice 来集中管理整个应用中的异常处理逻辑。

@ControllerAdvice
public class GlobalExceptionHandler {

    @ExceptionHandler(ResourceNotFoundException.class)
    public ResponseEntity<?> handleResourceNotFoundException(ResourceNotFoundException ex) {
        ErrorDetails errorDetails = new ErrorDetails(new Date(), ex.getMessage(), "Resource Not Found");
        return new ResponseEntity<>(errorDetails, HttpStatus.NOT_FOUND);
    }
}

过滤器和拦截器

Spring Web 还提供了过滤器(Filter)和拦截器(Interceptor)机制,允许你在请求到达控制器之前或之后执行某些操作,例如日志记录、身份验证或性能监控。

@Component
public class LoggingInterceptor implements HandlerInterceptor {

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("Request received: " + request.getRequestURI());
        return true; // 继续处理请求
    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        System.out.println("Request completed: " + request.getRequestURI());
    }
}

总结

Spring Web 框架是构建现代 Java Web 应用的重要工具,它不仅简化了 Web 应用的开发过程,还提供了丰富的特性和良好的扩展性。理解 Spring Web 框架的核心概念和组件,可以帮助开发者更有效地构建高效、可维护的应用程序。


http://www.kler.cn/a/445530.html

相关文章:

  • Sigrity System Explorer Snip Via Pattern From Layout模式从其它设计中截取过孔模型和仿真分析操作指导
  • js常用方法之: 预览大图(uniapp原生方法封装)
  • 手机便签哪个好用?手机桌面便签app下载推荐
  • Webpack简单介绍及安装
  • 学习记录:electron主进程与渲染进程直接的通信示例【开箱即用】
  • SSC338Q SigmaStar 摄像头主控芯片
  • 目标检测任务中根据真实坐标和预测坐标计算IOU
  • Halcon单相机+机器人=眼在手上#标定心得
  • css基础-认识css
  • 企业微信客户管理工具
  • JAVA安全之类加载器
  • 【操作系统】每日 3 题(七十)
  • 数据结构——常见数据结构和应用
  • 项目搭建+图片(添加+图片)
  • dolphinscheduler服务RPC框架源码解析(八)RPC提供者服务整合Spring框架实现
  • React-antd组件库 - 让Menu子菜单项水平排列 - 下拉菜单排序 - 自定义子菜单展示方式
  • 电商后台革命:RPA 自动化商品信息录入与更新【52rpa.com】
  • MongoDB常见面试题总结(上)
  • 用链表的详解和综合应用——实现链表的创建、输出、删除及添加结点(C语言)
  • VR线上展厅的色彩管理如何影响用户情绪?
  • 【踩坑】Pytorch与CUDA版本的关系及安装
  • 基于Spring Boot的房屋租赁管理系统
  • 在 Ubuntu 上安装 Muduo 网络库的详细指南
  • 巧记斜边函数hypot
  • JavaScript网络请求( XMLHttpRequest 对象,进度事件, 跨源资源共享)
  • express+mysql实现注册功能