快速学习使用Spring MVC的注解及三层架构

Spring MVC 是一个非常流行的 Java Web 框架,它允许开发人员快速构建高效且可扩展的 Web 应用程序。下面我将为您简要介绍 Spring MVC 的核心注解和三层架构,并提供一个简单的代码示例来展示这些概念的实际应用。

Spring MVC 核心注解

  1. @Controller: 标记一个类为 Controller,Spring 会扫描这个类并识别其中的方法,与前端发来的请求进行匹配。
  2. @RequestMapping: 用于定义 URL 映射。它可以作用在类或者方法上,用于指定请求的 URL、请求方法(GET、POST 等)、请求参数等。
  3. @ResponseBody : 指示方法的返回值应该直接写入 HTTP 响应体,而不是作为视图名称解析为视图页面。通常与 @RestController 注解(该注解是 @Controller@ResponseBody 的组合)一起使用,用于构建 RESTful Web 服务。
  4. @ModelAttribute: 用于绑定方法参数到命名的模型属性,或者将方法返回值添加到模型中。它也可以用于在 Controller 中定义一个全局的模型属性。
  5. @Autowired: 自动装配 Spring Bean。它可以用在字段、构造器或者 setter 方法上,让 Spring 自动注入依赖。

三层架构

在 Spring MVC 中,常见的三层架构包括:表示层(Controller 层)、业务逻辑层(Service 层)和数据访问层(DAO 层或 Repository 层)。

  1. 表示层(Controller 层): 负责接收用户的请求,调用业务逻辑层进行处理,并返回处理结果给用户。这一层主要处理 HTTP 请求和响应。
  2. 业务逻辑层(Service 层): 负责处理核心的业务逻辑,通常会调用数据访问层来获取或存储数据。
  3. 数据访问层(DAO 层或 Repository 层): 负责与数据库进行交互,执行 SQL 查询或更新操作。在 Spring 中,可以使用 Spring Data JPA、MyBatis 等框架来简化数据访问层的开发。

示例代码

下面是一个简单的 Spring MVC 项目结构示例,包括 Controller、Service 和 DAO 层的代码。

1. Controller 层

java 复制代码
@Controller
@RequestMapping("/users")
public class UserController {
    private final UserService userService;

    @Autowired
    public UserController(UserService userService) {
        this.userService = userService;
    }

    @GetMapping("/{id}")
    @ResponseBody
    public User getUser(@PathVariable("id") Long id) {
        return userService.getUserById(id);
    }
}

2. Service 层

java 复制代码
@Service
public class UserService {
    private final UserDao userDao;

    @Autowired
    public UserService(UserDao userDao) {
        this.userDao = userDao;
    }

    public User getUserById(Long id) {
        return userDao.findUserById(id);
    }
}

3. DAO 层(使用 Spring Data JPA)

java 复制代码
@Repository
public interface UserDao extends JpaRepository<User, Long> {
    // 这里继承了 JpaRepository,因此可以直接使用其提供的方法来操作数据库,例如 findById() 等。
}

在这个示例中,UserController 负责处理与 /users 路径相关的 HTTP 请求。当用户发送 GET 请求到 /users/{id} 时,getUser() 方法会被调用,并通过 UserServiceUserDao 来获取指定 ID 的用户信息。最后,获取到的用户信息会被直接写入 HTTP 响应体返回给客户端。

相关推荐
B1nna3 小时前
Redis学习(三)缓存
redis·学习·缓存
_im.m.z3 小时前
【设计模式学习笔记】1. 设计模式概述
笔记·学习·设计模式
小天努力学java6 小时前
【面试系列】深入浅出 Spring
java·spring·面试
左漫在成长6 小时前
王佩丰24节Excel学习笔记——第十九讲:Indirect函数
笔记·学习·excel
纪伊路上盛名在6 小时前
Max AI prompt1
笔记·学习·学习方法
2401_857610037 小时前
中文学习系统:成本效益分析与系统优化
java·数据库·学习·架构
条哥的高频放大器7 小时前
μC/OS-Ⅱ源码学习(8)---同步与延时
学习
悲且狂7 小时前
文件路径与Resource接口详解
java·学习
左漫在成长7 小时前
王佩丰24节Excel学习笔记——第十八讲:Lookup和数组
笔记·学习·excel
Tasfa7 小时前
【AI系列】从零开始学习大模型GPT (1)- Build a Large Language Model (From Scratch)
人工智能·gpt·学习