SpringBoot入门(3) - 对Hello world进行MVC分层

简介: 本文介绍了如何在Spring Boot项目中实现MVC分层架构,通过将代码划分为controller、service、dao和entity四个部分,实现高内聚低耦合的设计。示例项目包括用户增删查改功能,详细展示了各层的具体实现及运行测试。

SpringBoot入门(3) - 对Hello world进行MVC分层
上文中我们创建一个简单的Hello Wold级别的web应用程序,但是存在一个问题,我们将所有代码都放在一个类中的, 这显然是不合理的,那么一个经典的CRUD项目如何分包呢?本文结合常见的MVC分层思路带你学习常见的包结构划分。@pdai

SpringBoot入门 - 对Hello world进行MVC分层
经典的MVC三层架构
用Package解耦三层结构
controller
service
dao
entity
运行测试
示例源码

经典的MVC三层架构

三层架构(3-tier application) 通常意义上的三层架构就是将整个业务应用划分为:表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)。区分层次的目的即为了“高内聚,低耦合”的思想。

1、表现层(UI):通俗讲就是展现给用户的界面,即用户在使用一个系统的时候他的所见所得。

2、业务逻辑层(BLL):针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理。

3、数据访问层(DAL):该层所做事务直接操作数据库,针对数据的增添、删除、修改、更新、查找等。

img

用Package解耦三层结构

我们这里设计一个常见的用户增删查改项目,通常来说对应的包结构如下

img

controller

表示层

package tech.pdai.springboot.helloworld.controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import tech.pdai.springboot.helloworld.entity.User;
import tech.pdai.springboot.helloworld.service.UserService;

/**

  • @author pdai
    */
    @RestController
    @RequestMapping("/user")
    public class UserController {
@Autowired
private UserService userService;

/**
 * http://localhost:8080/user/add .
 *
 * @param user user param
 * @return user
 */
@RequestMapping("add")
public User add(User user) {

    userService.addUser(user);
    return user;
}

/**
 * http://localhost:8080/user/list .
 *
 * @return user list
 */
@GetMapping("list")
public List<User> list() {

    return userService.list();
}

}

service

业务逻辑层

package tech.pdai.springboot.helloworld.service.impl;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import tech.pdai.springboot.helloworld.dao.UserRepository;
import tech.pdai.springboot.helloworld.entity.User;
import tech.pdai.springboot.helloworld.service.UserService;

/**

  • user service impl.
    *
  • @author pdai
    */
    @Service
    public class UserServiceImpl implements UserService {
/**
 * user dao.
 */
@Autowired
private UserRepository userDao;

/**
 * @param user user
 */
@Override
public void addUser(User user) {

    userDao.save(user);
}

/**
 * @return user list
 */
@Override
public List<User> list() {

    return userDao.findAll();
}

}

dao

数据访问层,数据放在内存中。

package tech.pdai.springboot.helloworld.dao;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

import org.springframework.stereotype.Repository;
import tech.pdai.springboot.helloworld.entity.User;

/**

  • @author pdai
    */
    @Repository
    public class UserRepository {
private List<User> userDemoList = new ArrayList<>();

public void save(User user) {

    userDemoList.add(user);
}

public List<User> findAll() {

    return userDemoList;
}

}

entity

model实体层

package tech.pdai.springboot.helloworld.entity;

/**

  • User entity.
    *
  • @author pdai
    */
    public class User {
/**
 * user id
 */
private int userId;

/**
 * username.
 */
private String userName;

public int getUserId() {

    return userId;
}

public void setUserId(int userId) {

    this.userId = userId;
}

public String getUserName() {

    return userName;
}

public void setUserName(String userName) {

    this.userName = userName;
}

}

运行测试

添加用户

img

查询用户列表

img

作为一名多年开发经验的老鸟,平时抽空收集了各种优质的技术教程,涉及前后端和移动端。包含各种编程语言,有兴趣的可以抽空学习起来:全栈工程师必读技术教程 毕竟在这个竞争激烈的时代,多学一点,多一份技能傍身总是有好处的。

示例源码

https://github.com/realpdai/tech-pdai-spring-demos

`

相关文章
|
3月前
|
前端开发 Java 数据库
SpringBoot入门 - 对Hello world进行MVC分层
SpringBoot入门 - 对Hello world进行MVC分层
67 3
SpringBoot入门 - 对Hello world进行MVC分层
|
3月前
|
Java 数据库连接 测试技术
SpringBoot入门 - 添加内存数据库H2
SpringBoot入门 - 添加内存数据库H2
149 3
SpringBoot入门 - 添加内存数据库H2
|
2月前
|
Java 开发者 微服务
Spring Boot 入门:简化 Java Web 开发的强大工具
Spring Boot 是一个开源的 Java 基础框架,用于创建独立、生产级别的基于Spring框架的应用程序。它旨在简化Spring应用的初始搭建以及开发过程。
103 6
Spring Boot 入门:简化 Java Web 开发的强大工具
|
3月前
|
Java 应用服务中间件 数据库连接
SpringBoot入门 - SpringBoot HelloWorld
SpringBoot入门 - SpringBoot HelloWorld
SpringBoot入门 - SpringBoot HelloWorld
|
3月前
|
Java Spring
SpringBoot入门 - 定制自己的Banner
SpringBoot入门 - 定制自己的Banner
41 2
SpringBoot入门 - 定制自己的Banner
|
3月前
|
XML 安全 Java
SpringBoot入门 - SpringBoot简介
▶SpringBoot入门 - SpringBoot简介
|
26天前
|
JavaScript Java 测试技术
基于SpringBoot+Vue实现的留守儿童爱心网站设计与实现(计算机毕设项目实战+源码+文档)
博主是一位全网粉丝超过100万的CSDN特邀作者、博客专家,专注于Java、Python、PHP等技术领域。提供SpringBoot、Vue、HTML、Uniapp、PHP、Python、NodeJS、爬虫、数据可视化等技术服务,涵盖免费选题、功能设计、开题报告、论文辅导、答辩PPT等。系统采用SpringBoot后端框架和Vue前端框架,确保高效开发与良好用户体验。所有代码由博主亲自开发,并提供全程录音录屏讲解服务,保障学习效果。欢迎点赞、收藏、关注、评论,获取更多精品案例源码。
61 10
|
26天前
|
JavaScript Java 测试技术
基于SpringBoot+Vue实现的家政服务管理平台设计与实现(计算机毕设项目实战+源码+文档)
面向大学生毕业选题、开题、任务书、程序设计开发、论文辅导提供一站式服务。主要服务:程序设计开发、代码修改、成品部署、支持定制、论文辅导,助力毕设!
46 8
|
26天前
|
JavaScript 搜索推荐 Java
基于SpringBoot+Vue实现的家乡特色推荐系统设计与实现(源码+文档+部署)
面向大学生毕业选题、开题、任务书、程序设计开发、论文辅导提供一站式服务。主要服务:程序设计开发、代码修改、成品部署、支持定制、论文辅导,助力毕设!
57 8
|
26天前
|
JavaScript NoSQL Java
基于SpringBoot+Vue实现的大学生就业服务平台设计与实现(系统源码+文档+数据库+部署等)
面向大学生毕业选题、开题、任务书、程序设计开发、论文辅导提供一站式服务。主要服务:程序设计开发、代码修改、成品部署、支持定制、论文辅导,助力毕设!
67 6