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

学成在线模块工程

  • 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.mzph.cn/pingmian/67613.shtml

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

相关文章

GCPAAS/DashBoard:完全免费的仪表盘设计,基于Vue+ElementUI+G2Plot+Echarts,开源代码,简单易用!还在等什么呢

嗨&#xff0c;大家好&#xff0c;我是小华同学&#xff0c;关注我们获得“最新、最全、最优质”开源项目和高效工作学习方法 GCPAAS/DashBoard&#xff0c;一款基于SpringBoot、MyBatisPlus、ElementUI、G2Plot、Echarts等技术栈的仪表盘设计器&#xff0c;具备仪表盘目录管理…

登录校验Cookie、Session、JWT

目录 基础知识&#xff1a;登录校验的场景 基础知识&#xff1a;会话 ​编辑方案一&#xff1a;Cookie 方案二&#xff1a;Session 方案三&#xff1a;令牌技术 JWT 令牌 基础知识&#xff1a;登录校验的场景 基础知识&#xff1a;会话 什么是会话&#xff1f;什么是会话跟…

Android BitmapShader实现狙击瞄具十字交叉线准星,Kotlin

Android BitmapShader实现狙击瞄具十字交叉线准星&#xff0c;Kotlin <?xml version"1.0" encoding"utf-8"?> <RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android"xmlns:tools"http://schemas.android.…

gitignore忽略已经提交过的

已经在.gitignore文件中添加了过滤规则来忽略bin和obj等文件夹&#xff0c;但这些文件夹仍然出现在提交中&#xff0c;可能是因为这些文件夹在添加.gitignore规则之前已经被提交到Git仓库中了。要解决这个问题&#xff0c;您需要从Git的索引中移除这些文件夹&#xff0c;并确保…

Docker 中安装 Redis 并开启远程访问

在 Docker 中安装 Redis 并开启远程访问&#xff0c;以便本机可以连接的详细步骤&#xff1a; 一、拉取 Redis 镜像 首先&#xff0c;你需要从 Docker Hub 拉取 Redis 的镜像。使用以下命令&#xff1a; bash docker pull redis:latest这将拉取最新版本的 Redis 镜像。如果你…

ABP - 缓存模块(1)

ABP - 缓存模块&#xff08;1&#xff09; 1. 与 .NET Core 缓存的关系和差异2. Abp 缓存的使用2.1 常规使用2.2 非字符串类型的 Key2.3 批量操作 3. 额外功能 1. 与 .NET Core 缓存的关系和差异 ABP 框架中的缓存系统核心包是 Volo.Abp.Caching &#xff0c;而对于分布式缓存…

技术洞察:C++在后端开发中的前沿趋势与社会影响

文章目录 引言C在后端开发中的前沿趋势1. 高性能计算的需求2. 微服务架构的兴起3. 跨平台开发的便利性 跨领域技术融合与创新实践1. C与人工智能的结合2. C与区块链技术的融合 C对社会与人文的影响1. 提升生产力与创新能力2. 促进技术教育与人才培养3. 技术与人文的深度融合 结…

浅谈云计算22 | Kubernetes容器编排引擎

Kubernetes容器编排引擎 一、Kubernetes管理对象1.1 Kubernetes组件和架构1.2 主要管理对象类型 二、Kubernetes 服务2.1 服务的作用与原理2.2 服务类型 三、Kubernetes网络管理3.1 网络模型与目标3.2 网络组件3.2.1 kube-proxy3.2.2 网络插件 3.3 网络通信流程 四、Kubernetes…

Redis 和 MySQL 结合使用

Redis 和 MySQL 结合使用的场景非常常见&#xff0c;通常是利用 Redis 作为缓存层来提升 MySQL 数据库的性能&#xff0c;减少数据库的压力&#xff0c;同时提高系统的响应速度。下面是它们结合使用的几种常见方法&#xff1a; 1. 缓存数据库&#xff08;Cache-Aside&#xff…

【HarmonyOS NAPI 深度探索9】发布到 npm 并管理版本

【HarmonyOS NAPI 深度探索9】发布到 npm 并管理版本 开发了一个强大的 N-API 模块后&#xff0c;下一步就是将它发布到 npm&#xff0c;让更多开发者可以使用。同时&#xff0c;随着模块的更新迭代&#xff0c;版本管理也非常重要。今天&#xff0c;我们将讲解如何将 N-API 模…

如何在linux系统上完成定时开机和更新github端口的任务

任务背景 1.即使打开代理&#xff0c;有的时候github去clone比较大的文件时也会出问题。这时需要每小时更新一次github的host端口&#xff1b; 2.马上要放假&#xff0c;想远程登录在学校的台式电脑&#xff0c;但学校内网又不太好穿透。退而求其次&#xff0c;选择定时启动电…

MATLAB基础应用精讲-【数模应用】三维海浪模型仿真(附MATLAB和python代码实现)

目录 前言 ​算法原理 动态海面的建模方法 海浪谱理论 海洋水体构建技术 (一)波形模型 (二)水体着色 三维海浪模型建模 二维不规则长峰波海浪仿真 三维不规则短峰波海浪仿真 海浪建模的理论分析 谐波海面模型 Gerstner波模型 波动方程 代码实现 MATLAB p…

vector迭代器的使用以及迭代器失效

一、iterator的使用注意 begin与end 遵循左闭右开的原则&#xff0c;begin 指向vector的第一个元素&#xff0c;end 指向vector的最后一个元素的往下一个位置。 rbegin 与 rend rbegin指向最后一个元素的位置&#xff0c;rend指向第一个元素的往前一个位置。 二、vector的常…

无降智o1 pro——一次特别的ChatGPT专业模式探索

这段时间和朋友们交流 ChatGPT 的使用心得&#xff0c;大家都提到一个很“神秘”的服务&#xff1a;它基于 O1 Pro 模型&#xff0c;能够在对话里一直保持相对高水平的理解和回复&#xff0c;不会突然变得“降智”。同时&#xff0c;整体使用还做了免折腾的网络设置——简单一点…

Web前端开发技术之HTMLCSS知识点总结

学习路线 一、新闻网界面1. 代码示例2. 效果展示3. 知识点总结3.1 HTML标签和字符实体3.2 超链接、颜色描述与标题元素3.3 关于图片和视频标签&#xff1a;3.4 CSS引入方式3.5 CSS选择器优先级 二、flex布局1. 代码示例2. 效果展示3. 知识点总结3.1 span标签和flex容器的区别3.…

ToDesk设置临时密码和安全密码都可以当做连接密码使用

ToDesk 在各领域办公都已经是非常常见了 为了安全 ToDesk 设置了连接密码&#xff0c;想连接 需要输入远程码和连接密码 我们刚打开 系统默认给我们用的是临时密码&#xff0c;安全性确实很强 和定时Tokey一样&#xff0c;固定时间切换。 但是 如果我们要经常连接这个电脑&a…

js高亮文本

高亮文本 const inputs ["这是一个普通文本&#xff0c;包含关键字测试。",<p style"font-size: 10px">这是一个<span>GVM</span> <strong>测试</strong>内容。</p>, ];const keywords ["测试", "G…

锐捷路由器网关RG-NBR6135-E和锐捷交换机 Ruijie Reyee RG-ES224GC 电脑登录web方法

2025年1月17日22:29:35 最近淘了点东西&#xff0c;准备在家里搞一套深度学习的服务器&#xff0c;先把网关和交换机搞到了 锐捷路由器网关RG-NBR6135-E 电脑登录web方法 在拿到机器的时候&#xff0c;如果不是全新建议拿根牙签&#xff0c;差入reset 5-10秒,灯光会全部闪几下…

Windows下的C++内存泄漏检测工具Visual Leak Detector (VLD)介绍及使用

在软件开发过程中&#xff0c;内存管理是一个至关重要的环节。内存泄漏不仅会导致程序占用越来越多的内存资源&#xff0c;还可能引发系统性能下降甚至程序崩溃。对于Linux平台来说&#xff0c;内存检测工具非常丰富&#xff0c;GCC自带的AddressSanitizer (asan) 就是一个功能…

如何在vue中渲染markdown内容?

文章目录 引言什么是 markdown-it&#xff1f;安装 markdown-it基本用法样式失效&#xff1f;解决方法 高级配置语法高亮 效果展示 引言 在现代 Web 开发中&#xff0c;Markdown 作为一种轻量级的标记语言&#xff0c;广泛用于文档编写、内容管理以及富文本编辑器中。markdown…