学成在线_内容管理模块_创建模块工程

学成在线模块工程

  • 1.各个微服务依赖基础工程
  • 2.每个微服务都是一个前后端分离的项目
  • 3.xuecheng-plus-content:内容管理模块工程
    • xuecheng-plus-content-model
    • xuecheng-plus-content-service
    • xuecheng-plus-content-api

1.各个微服务依赖基础工程

在这里插入图片描述

2.每个微服务都是一个前后端分离的项目

前后端交互主要依赖接口
在这里插入图片描述

一、前端发起请求:1.前端一般通过HTTP协议,向后端的接口层发送请求,接口层的controller接受前端请求。(controller的作用:1解释前端请求,调用业务层的Service进行业务处理)(2接受Service处理后的业务结果,响应给前端)
构建请求信息

前端页面(如HTML页面)通过JavaScript等技术,根据用户的操作(如点击按钮、提交表单等)来构建HTTP请求。请求信息包括请求方法(如GET、POST、PUT、DELETE等),请求URL(指向后端接口的地址),请求头(包含如内容类型、认证信息等),以及请求体(对于POST、PUT等请求,包含要发送给后端的数据,如JSON格式的用户输入数据)。例如,用户在一个电商网站的前端页面上点击“提交订单”按钮,前端JavaScript代码会构建一个POST请求,请求URL可能是/api/orders,请求头中设置Content-Type: application/json,请求体包含订单信息,如商品ID、数量、用户地址等。

发送请求

前端通过浏览器的网络请求接口(如XMLHttpRequest对象或Fetch API)将构建好的HTTP请求发送到后端服务器。这个过程是异步的,前端页面不会因为等待后端响应而停止加载或卡顿,用户可以继续进行其他操作。

二、接口层(Controller)处理请求:2.接口层的controller解析前端请求,转换为后端可以处理的数据格式,调用业务层的service进行业务处理。
接收请求

后端服务器的接口层(Controller)根据配置的路由规则(通常在框架中定义,如Spring MVC的@RequestMapping注解)来接收前端发送的HTTP请求。它会解析请求的URL、请求方法、请求头和请求体等信息。例如,在Spring Boot项目中,一个Controller类中的方法可能用@PostMapping("/api/orders")注解来接收POST请求,当请求URL为/api/orders且请求方法为POST时,该方法就会被触发。

解释请求并调用业务层

Controller将解析后的请求参数(如从请求体中解析出的JSON数据)转换为后端可以处理的数据格式(如Java对象)。然后,它会调用业务层的Service方法,将这些数据作为参数传递给Service,让Service进行具体的业务逻辑处理。以订单提交为例,Controller将请求体中的订单信息JSON字符串转换为Order对象,然后调用OrderService的createOrder(Order order)方法,将Order对象传递过去。

三、业务层(Service)处理业务逻辑:3.业务层service调用持久层的Dao获取数据库中的数据,根据需求编写好处理数据的代码,将根据业务处理好的数据返回给controller。
调用持久层获取数据

Service层根据业务需求,调用持久层的Dao(Data Access Object)来获取数据库中的数据。Dao封装了对数据库的操作细节,如SQL语句的执行等。例如,在处理订单创建业务时,OrderService可能需要调用ProductDao来查询商品库存信息,以判断库存是否足够。ProductDao会执行相应的SQL查询语句,从数据库的Product表中获取商品的库存数据。

处理业务逻辑并返回结果

Service获取到数据库数据后,根据业务规则进行处理。如在订单业务中,如果库存足够,就更新库存信息(可能再次调用ProductDao来执行更新库存的SQL语句),然后生成订单编号等操作,将处理好的订单数据(如订单状态、订单编号等)封装好返回给Controller。如果库存不足,Service会返回一个表示库存不足的错误信息或状态码给Controller。

四、持久层(Dao)操作数据库:4.持久层的Dao读取数据库数据
读取数据库数据

Dao根据Service层的调用,执行SQL查询语句来读取数据库中的数据。它会将查询结果转换为Java对象(如将查询到的Product数据转换为Product对象列表)并返回给Service层。例如,ProductDao执行SELECT * FROM Product WHERE id = ?这样的SQL语句,查询指定ID的商品信息,并将查询结果封装为Product对象返回。

更新数据库数据(如有需要)

除了读取数据,Dao还会根据业务需求执行数据更新操作,如插入新数据(如插入新的订单记录)、更新现有数据(如更新商品库存)或删除数据等。它会执行相应的SQL插入、更新或删除语句,并处理可能的数据库异常情况。

3.xuecheng-plus-content:内容管理模块工程

xuecheng-plus-content:内容管理模块工程,负责聚合xuecheng-plus-content-api、xuecheng-plus-content-service、xuecheng-plus-content-model。
在这里插入图片描述
xuecheng-plus-content-api:接口工程,为前端提供接口。
xuecheng-plus-content-service: 业务工程,为接口工程提供业务支撑。
xuecheng-plus-content-model: 数据模型工程,存储数据模型类、数据传输类型等。

在这里插入图片描述
在这里插入图片描述

在项目根目录创建内容管理模块的父工程xuecheng-plus-content
在这里插入图片描述

内容管理父工程的主要职责是聚合内容管理接口和内容管理接口实现两个工程,它的父工程是 xuecheng-plus-parent。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><artifactId>xuecheng-plus-parent</artifactId><groupId>com.xuecheng</groupId><version>0.0.1-SNAPSHOT</version><relativePath>../xuecheng-plus-parent</relativePath></parent><artifactId>xuecheng-plus-content</artifactId><name>xuecheng-plus-content</name><description>xuecheng-plus-content</description><packaging>pom</packaging><modules><module>xuecheng-plus-content-api</module><module>xuecheng-plus-content-model</module><module>xuecheng-plus-content-service</module></modules>
</project>

xuecheng-plus-content-model

在xuecheng-plus-content下创建xuecheng-plus-content-model数据模型工程。
在这里插入图片描述

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><artifactId>xuecheng-plus-content</artifactId><groupId>com.xuecheng</groupId><version>0.0.1-SNAPSHOT</version></parent><artifactId>xuecheng-plus-content-model</artifactId><dependencies><dependency><groupId>com.xuecheng</groupId><artifactId>xuecheng-plus-base</artifactId><version>0.0.1-SNAPSHOT</version></dependency></dependencies></project>

xuecheng-plus-content-service

在xuecheng-plus-content下创建xuecheng-plus-content-service接口实现工程。
在这里插入图片描述

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><artifactId>xuecheng-plus-content</artifactId><groupId>com.xuecheng</groupId><version>0.0.1-SNAPSHOT</version></parent><artifactId>xuecheng-plus-content-service</artifactId><dependencies><dependency><groupId>com.xuecheng</groupId><artifactId>xuecheng-plus-content-model</artifactId><version>0.0.1-SNAPSHOT</version></dependency></dependencies>
</project>

xuecheng-plus-content-api

在xuecheng-plus-content下创建xuecheng-plus-content-api接口工程。
在这里插入图片描述

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><artifactId>xuecheng-plus-content</artifactId><groupId>com.xuecheng</groupId><version>0.0.1-SNAPSHOT</version></parent><artifactId>xuecheng-plus-content-api</artifactId><dependencies><dependency><groupId>com.xuecheng</groupId><artifactId>xuecheng-plus-content-service</artifactId><version>0.0.1-SNAPSHOT</version></dependency></dependencies></project>

在这里插入图片描述

图表解读
xuecheng-plus-parent:项目父工程,其他模块继承自它,获取通用配置。
xuecheng-plus-base:项目基础工程,可能包含一些基础的工具类或配置,被其他模块继承。
xuecheng-plus-content:可能是一个聚合模块,它继承自父工程,并被其他模块继承。

xuecheng-plus-content-api:接口工程,提供API接口,依赖于数据模型工程和服务工程。
xuecheng-plus-content-service:服务工程,实现业务逻辑,可能依赖于数据模型工程。
xuecheng-plus-content-mode:数据模型工程,定义数据模型,被接口工程和服务工程依赖。
这种结构有助于保持项目的模块化和可维护性,每个模块都有明确的职责和依赖关系。

在软件开发中,特别是在使用如Maven或Gradle这样的构建工具时,"继承"和"依赖"是两个非常重要的概念,它们定义了项目模块之间的关系。在你提供的图表和描述中,这些概念被用来描述不同工程或模块之间的结构关系。

继承
在项目结构中,"继承"通常指的是一个模块继承另一个模块的配置和行为。这类似于面向对象编程中的继承概念,其中子类继承父类的属性和方法。在Maven项目中,一个模块可以继承另一个模块的POM(Project Object Model),这意味着它将自动获得父模块定义的所有配置,如插件、依赖等。
作用:简化配置管理,避免重复定义相同的配置。
示例:在图表中,xuecheng-plus-content模块继承自xuecheng-plus-parent。这意味着xuecheng-plus-content将自动继承xuecheng-plus-parent中定义的所有配置。

依赖
"依赖"指的是一个模块需要另一个模块的代码或资源才能正常工作。在Maven或Gradle中,依赖关系允许一个项目模块使用另一个模块提供的库或服务。
作用:管理模块间的依赖关系,确保模块可以正确地使用其他模块提供的代码。
示例:在图表中,xuecheng-plus-content-api模块依赖于xuecheng-plus-content-mode。这意味着xuecheng-plus-content-api需要xuecheng-plus-content-mode模块中的代码或资源才能正常编译或运行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/2260.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

1️⃣Java中的集合体系学习汇总(List/Map/Set 详解)

目录 01. Java中的集合体系 02. 单列集合体系​ 1. Collection系列集合的遍历方式 &#xff08;1&#xff09;迭代器遍历&#xff08;2&#xff09;增强for遍历​编辑&#xff08;3&#xff09;Lambda表达式遍历 03.List集合详解 04.Set集合详解 05.总结 Collection系列…

智能科技与共情能力加持,哈曼重新定义驾乘体验

2025年1月6日&#xff0c;拉斯维加斯&#xff0c;2025年国际消费电子展——想象一下&#xff0c;当您步入一辆汽车&#xff0c;它不仅能响应您的指令&#xff0c;更能理解您的需求、适应您的偏好&#xff0c;并为您创造一个独特且专属的交互环境。作为汽车科技领域的知名企业和…

Unity中实现倒计时结束后干一些事情

问题描述&#xff1a;如果我们想实现在一个倒计时结束后可以执行某个方法&#xff0c;比如挑战成功或者挑战失败&#xff0c;或者其他什么的比如生成boss之类的功能&#xff0c;而且你又不想每次都把代码复制一遍&#xff0c;那么就可以用下面这种方法。 结构 实现步骤 创建一…

从0开始学习搭网站第二天

前言&#xff1a;今天比较惭愧&#xff0c;中午打铲吃了一把&#xff0c;看着也到钻二了&#xff0c;干脆顺手把这个赛季的大师上了&#xff0c;于是乎一直到网上才开始工作&#xff0c;同样&#xff0c;今天的学习内容大多来自mdn社区mdn 目录 怎么把文件上传到web服务器采用S…

STM32 FreeRTOS时间片调度---FreeRTOS任务相关API函数---FreeRTOS时间管理

目录 时间片调度简介 FreeRTOS任务相关API函数介绍 延时函数介绍 时间片调度简介 在FreeRTOS中&#xff0c;同等优先级的任务会轮流分享相同的CPU时间&#xff0c;这个时间被称为时间片。在这里&#xff0c;一个时间片的长度等同于SysTick中断的周期。 FreeRTOS任务相关API…

VM(虚拟机)和Linux的安装

文章目录 1.虚拟机1.1 VM的安装和删除1.1.1 安装前提1.1.2 安装步骤 1.2 虚拟机快照1.3 虚拟机的克隆 2.Linux的安装2.1 CentOS2.2 Ubuntu 1.虚拟机 &#xff08;1&#xff09;Linux系统的安装方式 ①物理机安装&#xff1a;直接将操作系统安装到服务器硬件上 ②虚拟机安装&am…

C++算法第十五天

复习周终于结束了&#xff0c;这也是复习周结束后的第一篇文章&#xff0c;请各位小伙伴们细细品尝&#xff0c;废话不多说&#xff0c;我们开始今天的讲解。 第一题 题目链接 918. 环形子数组的最大和 - 力扣&#xff08;LeetCode&#xff09; 题目解析 代码原理 注意&…

mysql-5.7.18保姆级详细安装教程

本文主要讲解如何安装mysql-5.7.18数据库&#xff1a; 将绿色版安装包mysql-5.7.18-winx64解压后目录中内容如下图&#xff0c;该例是安装在D盘根目录。 在mysql安装目录中新建my.ini文件&#xff0c;文件内容及各配置项内容如下图&#xff0c;需要先将配置项【skip-grant-tab…

<OS 有关>Ubuntu 24 安装 openssh-server, tailscale+ssh 慢增加

更新日志&#xff1a; Created on 14Jan.2025 by Dave , added openssh-server, tailescape Updated on 15Jan.2025, added "tailescape - tailscape ssh" 前期准备&#xff1a; 1. 更新可用软件包的数据库 2. 升级系统中所有已安装的软件包到最新版本 3. 安装 cur…

STM32-keil安装时遇到的一些问题以及解决方案

前言&#xff1a; 本人项目需要使用到STM32,故需配置keil 5&#xff0c;在配置时遇到了以下问题&#xff0c;并找到相应的解决方案&#xff0c;希望能够为遇到相同问题的道友提供一些解决思路 1、提示缺少&#xff08;missing&#xff09;version 5编译器 step1&#xff1a;找…

HTTP1.0/1.1/2.0/3.0 的区别?

HTTP&#xff08;Hypertext Transfer Protocol&#xff09;是用于传输超文本的协议。各版本的主要区别体现在性能优化、数据传输方式以及支持的功能上。 每一次协议的更新都是对旧协议的改进&#xff1a; 1. HTTP1.0 发布于1996年 无连接&#xff08;Connectionless&#…

蓝桥杯_B组_省赛_2022(用作博主自己学习)

题目链接算法11.九进制转十进制 - 蓝桥云课 进制转换 21.顺子日期 - 蓝桥云课 时间与日期 31.刷题统计 - 蓝桥云课 时间与日期 41.修剪灌木 - 蓝桥云课 思维 51.X 进制减法 - 蓝桥云课 贪心 61.统计子矩阵 - 蓝桥云课 二维前缀和 71.积木画 - 蓝桥云课 动态规划 82.扫雷 - 蓝桥…

C++|CRC校验总结

参考&#xff1a; Vector - CAPL - CRC算法介绍 开发工具 > CRC校验工具 文章目录 简介CRC-8CRC-16CRC-32 简介 循环冗余校验&#xff08;Cyclic Redundancy Check&#xff0c;简称CRC&#xff09;是一种数据校验算法&#xff0c;广泛用于检测数据传输或存储过程中的错误。…

迅翼SwiftWing | ROS 固定翼开源仿真平台正式发布!

经过前期内测调试&#xff0c;ROS固定翼开源仿真平台今日正式上线&#xff01;现平台除适配PX4ROS环境外&#xff0c;也已实现APROS环境下的单机飞行控制仿真适配。欢迎大家通过文末链接查看项目地址以及具体使用手册。 1 平台简介 ROS固定翼仿真平台旨在实现固定翼无人机决策…

C语言数据结构与算法(排序)详细版

大家好&#xff0c;欢迎来到“干货”小仓库&#xff01;&#xff01; 很高兴在CSDN这个大家庭与大家相识&#xff0c;希望能在这里与大家共同进步&#xff0c;共同收获更好的自己&#xff01;&#xff01;无人扶我青云志&#xff0c;我自踏雪至山巅&#xff01;&#xff01;&am…

微信小程序获取openid

2025年1月15日&#xff1a; 注意&#xff1a;其中appid,secret&#xff0c;还有服务器网址都按自己实际的填写 1、先在云服务器上安装nodejs&#xff0c;然后写个get接口&#xff1a; const express require(express); const app express();app.get(/getOpenid,(req,res)&…

C语言:-三子棋游戏代码:分支-循环-数组-函数集合

思路分析&#xff1a; 1、写菜单 2、菜单之后进入游戏的操作 3、写函数 实现游戏 3.1、初始化棋盘函数&#xff0c;使数组元素都为空格 3.2、打印棋盘 棋盘的大概样子 3.3、玩家出棋 3.3.1、限制玩家要下的坐标位置 3.3.2、判断玩家要下的位置是否由棋子 3.4、电脑出棋 3.4.1、…

FPGA工程师成长四阶段

朋友&#xff0c;你有入行三年、五年、十年的职业规划吗&#xff1f;你知道你所做的岗位未来该如何成长吗&#xff1f; FPGA行业的发展近几年是蓬勃发展&#xff0c;有越来越多的人才想要或已经踏进了FPGA行业的大门。很多同学在入行FPGA之前&#xff0c;都会抱着满腹对职业发…

vscode的安装与使用

下载 地址&#xff1a;https://code.visualstudio.com/ 安装 修改安装路径&#xff08;不要有中文&#xff09; 点击下一步&#xff0c;创建桌面快捷方式&#xff0c;等待安装 安装中文插件 可以根据自己的需要安装python和Jupyter插件

懒饭 3.0.2 | 谷歌版纯净无广告教做菜软件

这款教做菜的软件是谷歌版&#xff0c;提供了一个纯净无广告的学习环境。即使没有会员&#xff0c;普通版也足够满足日常使用需求。软件内含分类和排行榜功能&#xff0c;支持搜索&#xff0c;教程形式多样&#xff0c;包括文字和视频&#xff0c;是学习烹饪技巧、追女朋友的好…