快速学习使用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 响应体返回给客户端。

相关推荐
咖啡八杯11 小时前
GoF设计模式——中介者模式
java·后端·spring·设计模式
Flittly2 天前
【AgentScope Java新手村系列】(14)人机交互
java·spring boot·spring
唐青枫6 天前
Java Spring WebFlux 实战指南:用 Mono、Flux 和 WebClient 写响应式接口
java·spring
咖啡八杯8 天前
GoF设计模式——策略模式
java·后端·spring·设计模式
Flittly9 天前
【AgentScope Java新手村系列】(11)中断与恢复
java·spring boot·spring
dunky9 天前
Spring 的三级缓存与循环依赖
后端·spring
通信小呆呆14 天前
当算法有了“五感”:多模态数据融合如何向人体感官协同学习?
人工智能·学习·算法·机器学习·机器人
码云数智-园园14 天前
C++20 Modules 模块详解
java·开发语言·spring
H__Rick14 天前
自动对焦学习-3
人工智能·学习·计算机视觉
Daisy Lee14 天前
量化学习-第1章-什么是量化金融
学习·金融·datawhale