当前位置: 首页 > news >正文

Spring学习

目录

 关于Spring

Spring MVC

MVC

三层架构

 三层架构项目结构


 关于Spring

Spring ,SpringBoot, Spring MVC属于Spring家族的产品。

Spring就是一个框架,是为了简化java开发;SpringBoot是基于Spring的一个框架,为了简化Spring项目而诞生的。

Spring MVC

Spring MVC又为Spring Web MVC,是一种Web框架。

MVC

MVC是Model View Controller的缩写,它是软件工程中的一种软件架构设计模式,它把软件系统分为模型、视图和控制器三个基本部分。

  • View(视图):指在应用程序中专门用来与浏览器进行交互,展示数据的资源。
  • Model(模型):是应用程序的主体部分,用来处理程序中数据逻辑的部分。
  • Controller(控制器):可以理解为一个分发器,用来决定对于视图发来的请求,需要用哪个模型来处理,以及处理完后需要跳转到哪一个视图。即用来连接视图和模型。

三层架构

目前现在更主流的开发方式是“前后端分离”的方式,后端开发工程师不再需要关注前端的实现,所以对于Java后端开发,又有了一种新的分层架构:把整体架构分为表现层、业务逻辑层和数据层。这种分层方式也称之为“三层架构”

1.表现层:就是展示数据结果和接受用户指令的,是最靠近用户的一层;

2.业务逻辑层:负责处理业务逻辑,里面有复杂业务的具体实现;

3.数据访问层:负责存储和管理与应用程序相关的数据,包括增删改查。

三层架构和MVC的区别和联系:

 三层架构项目结构

src/main/java
├── com.example.demo
│   ├── controller(package)              // 表现层(Controller)
│   │   └── UserController.java
│   ├── service(package)                // 业务逻辑层(Service)
│   │   ├── UserService.java (interface )
│   │   └── impl (package)
│   │       └── UserServiceImpl.java
│   ├── repository (package)         // 数据访问层(Repository或DAO
│   │   └── UserRepository.java (interface )
│   ├── Model(package)                // 实体类(Model)
│   │   └── User.java
│   └── DemoApplication.java

补充:DAORepository 本质上都是用来处理数据访问的组件,但它们的设计理念和适用场景不同。

 具体代码:

//表现层(控制类)
@RestController
@RequestMapping("/book")
public class BookController {@AutowiredBookService service;@RequestMapping("/booklist")public String booklist() {List<Book> list = service.getMessage();return list.toString();}
}//实体类
@Data
public class Book {private Integer id;private String from;private String to;private String deleteFlag;private String createTime;private String updateTime;
}//数据访问层
@Mapper
public interface BookRepository {@Select("select *from message_info")List<Book> getBooks();}//业务逻辑层
@Service
public class BookService {@AutowiredBookRepository bookRepository;public List<Book> getMessage(){return bookRepository.getBooks();}}


http://www.mrgr.cn/news/95274.html

相关文章:

  • C语言入门知识(上)
  • (一)飞行器的姿态欧拉角, 欧拉旋转, 完全数学推导(基于坐标基的变换矩阵).(偏航角,俯仰角,横滚角)
  • vue使用element-ui自定义样式思路分享【实操】
  • 【QT5 多线程示例】互斥锁
  • Web-Machine-N7靶机通关攻略
  • 工厂方法模式、简单工厂模式与抽象工厂模式的对比
  • Netty中的直接内存是怎么回事?
  • 强推 Maven多镜像源快速切换工具,GUI操作超便捷
  • 软件工程之软件验证计划Software Verification Plan
  • 模型空间、图纸空间、布局(Layout)之间联系——CAD c#二次开发
  • Java+Html实现前后端客服聊天
  • K8S学习之基础四十:K8S配置altermanager发送告警到钉钉群
  • [AI速读]如何构建高效的AMBA协议检查器(Checker IP)
  • 基于carla的模仿学习(附数据集CORL2017)更新中........
  • PWM控制电机转速的原理及相关寄存器值计算
  • 失败的面试经历(ʘ̥∧ʘ̥)
  • 英伟达黄仁勋2025GTC演讲深度解析:液冷GPU、AI工厂、机器人AI…...
  • electron桌面应用多种快速创建方法
  • Windows 系统安装 Python3.7 、3.8、3.9、3.10、 3.11 、3.12、3.13最新版,附带相应程序。
  • 尝试在软考65天前开始成为软件设计师-计算机网络