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

`

相关文章
|
9天前
|
前端开发 Java 数据库
SpringBoot入门 - 对Hello world进行MVC分层
SpringBoot入门 - 对Hello world进行MVC分层
28 3
SpringBoot入门 - 对Hello world进行MVC分层
|
20天前
|
Java 应用服务中间件 数据库连接
SpringBoot入门(2) - SpringBoot HelloWorld
SpringBoot入门(2) - SpringBoot HelloWorld
33 2
SpringBoot入门(2) - SpringBoot HelloWorld
|
21天前
|
Java 中间件
SpringBoot入门(6)- 添加Logback日志
SpringBoot入门(6)- 添加Logback日志
64 5
|
20天前
|
前端开发 Java 数据库
SpringBoot入门(3) - 对Hello world进行MVC分层
SpringBoot入门(3) - 对Hello world进行MVC分层
31 4
|
13天前
|
前端开发 Java 数据库
SpringBoot入门(3) - 对Hello world进行MVC分层
SpringBoot入门(3) - 对Hello world进行MVC分层
15 1
 SpringBoot入门(3) - 对Hello world进行MVC分层
|
21天前
|
缓存 IDE Java
SpringBoot入门(7)- 配置热部署devtools工具
SpringBoot入门(7)- 配置热部署devtools工具
31 2
 SpringBoot入门(7)- 配置热部署devtools工具
|
2月前
|
前端开发 Java Apache
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个
本文详细讲解了如何整合Apache Shiro与Spring Boot项目,包括数据库准备、项目配置、实体类、Mapper、Service、Controller的创建和配置,以及Shiro的配置和使用。
373 1
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个
|
Java API 数据库
springboot webflux r2dbc入门案例
springboot webflux r2dbc入门案例
315 0
|
druid Java 关系型数据库
SpringBoot基础知识入门详细介绍&基于SpringBoot的SSMP整合案例(2)
(一)快速上手SpringBoot SpringBoot入门程序开发 SpringBoot是由pivotal团队提供的全新框架,其设计目的是用来简化Spring应用的初始搭建以及开发过程。
|
XML Java 应用服务中间件
SpringBoot基础知识入门详细介绍&基于SpringBoot的SSMP整合案例(1)
(一)快速上手SpringBoot SpringBoot入门程序开发 SpringBoot是由pivotal团队提供的全新框架,其设计目的是用来简化Spring应用的初始搭建以及开发过程。