欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 时评 > Spring -- 三层架构

Spring -- 三层架构

2024/10/25 19:23:43 来源:https://blog.csdn.net/m0_60963435/article/details/140570543  浏览:    关键词: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 {@Autowiredprivate BookService bookService;@RequestMapping("/getList")public List<BookInfo> getList() {List<BookInfo> bookInfos = bookService.getList();return bookInfos;}
}
//Service层 -- BookServer
@Service
public class BookService {@Autowiredprivate 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

🫵 今天记得敲代码

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com