自学内容网 自学内容网

Spring -- 三层架构

在这里插入图片描述

T04BF

👋专栏: 算法|JAVA|MySQL|C语言

🫵 今天你敲代码了吗

应用分层

介绍

在阿里的开发手册里,关于工程结构部分,定义的常见工程的应用分层结构

在这里插入图片描述

那么什么是应用分层呢?

应用分层是一种软件开发设计思想,他将应用程序分层N个层次.这N个层次分别负责各自的职责,多个层次之间协同提供完整的功
能.根据项目的复杂度,把项目分成三层,四层或者更多层

常见的MVC设计模式,就是应用分层的一种具体体现
在这里插入图片描述

但是目前主流的开发模式是"前后端分离"的方式,即后端工程师不需要关注前端的实现,所以又产生了一种新的分层架构:将整体架构分成表现层、业务逻辑层和数据层,这种分层方式也称为"三层架构".

  1. 表现层:就是展示数据结果和接受用户指令的,是最靠近用户的一层
  2. 业务逻辑层:负责处理业务逻辑,里面有复杂业务的具体实现
  3. 数据层:负责存储和管理与应用程序相关的数据
    按照上面的层次划分,Spring MVC站在后端开发人员的角度,也给予了支持,在Spring的实现中有所体现
    在这里插入图片描述
  • Controller:控制层。接受前端发送的请求,对请求进行处理,并响应数据
  • Service:业务逻辑层。处理具体的业务逻辑。
  • Dao:数据访问层,也称为持久层。负责数据访问操作,包括数据的增、删、改、查。

2 简单应用

一个简单的图书管理系统例子:

//Controller层 -- UserController
@RestController
@RequestMapping("/user")
public class UserController {
    @RequestMapping("/login")
    public String login(String userName, String password, HttpSession session) {
        if(!StringUtils.hasLength(userName) || !StringUtils.hasLength(password)) {
            return "用户名和密码不能为空";
        }
        if(!"admin".equals(userName) || !"123456".equals(password)) {
            return "账号或密码错误";
        }
        session.setAttribute("userName", userName);
        return "";
    }
}
//Controller层 -- BookController
@RestController
@RequestMapping("/book")
public class BookController {
    @Autowired
    private BookService bookService;
    @RequestMapping("/getList")
    public List<BookInfo> getList() {
        List<BookInfo> bookInfos = bookService.getList();
        return bookInfos;
    }
}
//Service层 -- BookServer
@Service
public class BookService {
    @Autowired
    private BookDao bookDao;
    public List<BookInfo> getList() {
        List<BookInfo> bookInfos = bookDao.mockData();
        for (BookInfo bookInfo : bookInfos) {
            if(bookInfo.getState() == 1) {
                bookInfo.setStateCN("可借阅");
            }else {
                bookInfo.setStateCN("不可借阅");
            }
        }
        return bookInfos;
    }
}
//Dao层 -- BookDao
@Repository
public class BookDao {
    public List<BookInfo> mockData() {
        List<BookInfo> books = new ArrayList<>();
        //没有数据,因此直接模拟数据
        for (int i = 0; i < 10; i++) {
            BookInfo book = new BookInfo();
            book.setBookId(i);
            book.setBookName("图书"+i);
            book.setAuthor("作者"+i);
            book.setNum(i*10);
            Random random = new Random();
            book.setPrice(BigDecimal.valueOf(random.nextDouble()*100));
            book.setPublishName("出版社"+i);
            book.setState(1);
            books.add(book);
        }
        return books;
    }
}
感谢您的访问!!期待您的关注!!!

在这里插入图片描述

T04BF

🫵 今天记得敲代码

原文地址:https://blog.csdn.net/m0_60963435/article/details/140570543

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!