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

学成在线模块工程

  • 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.…

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;而对于分布式缓存…

浅谈云计算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…

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

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

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…

如何在vue中渲染markdown内容?

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

openharmony应用开发快速入门

开发准备 本文档适用于OpenHarmony应用开发的初学者。通过构建一个简单的具有页面跳转/返回功能的应用&#xff08;如下图所示&#xff09;&#xff0c;快速了解工程目录的主要文件&#xff0c;熟悉OpenHarmony应用开发流程。 在开始之前&#xff0c;您需要了解有关OpenHarmon…

docker 部署confluence

1.安装docker的过程就不说了。 2.下载镜像。 docker pull cptactionhank/atlassian-confluence:7.4.0 docker images 3.下载pojie 包。 https://download.csdn.net/download/liudongyang123/90285042https://download.csdn.net/download/liudongyang123/90285042https://do…

Cloud Foundry,K8S,Mesos Marathon弹性扩缩容特性对比

一、Cloud Foundry 使用Scaling an Application Using App Autoscaler插件&#xff0c;基于资源使用情况触发简单扩缩容 CPU、内存、Http带宽、延时等 监控这些资源的使用情况决定扩缩容策略&#xff1a;实例是增加还是减少 Instance Limits 限制实例数量范围&#xff0c;定义…

node中文名的js文件有问题

新版Node无法运行含有中文名的JS文件&#xff0c;具体表现在无报错无反应。如下图&#xff1a; 源码如下&#xff1a; 改成英文的JS文件&#xff0c;则正常&#xff0c;如下图&#xff1a;

flutter 常用UI组件

文章目录 1. Toast 文本提示框oktoastbot_toast2. loading 加载窗flutter_easyloading3. 对话框gex dialog4.下拉刷新pull_to_refresh5. pop 窗custom_pop_up_menu6. pin code 密码框pinput7. 二维码qr_flutter8. swiper 滚动组件carousel_sliderflutter_swiper_view9. Badge 角…

HTML学习笔记(4)

目录 一、背景相关样式 二、定位position 三、javascript 1、变量的定义 2、数据类型 3、绑定事件 一、背景相关样式 background-image: url(); // 背景图片 background-repeat: repeat; // 背景图片是否平铺 no-repeat background-size: 200px; // 背景图片尺寸 cover把…

【软件测试】用例篇

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站 &#x1f308;个人主页&#xff1a; 南桥几晴秋 &#x1f308;C专栏&#xff1a; 南桥谈C &#x1f308;C语言专栏&#xff1a; C语言学习系…

Jenkins-基于Role的鉴权机制

jenkins自带了一些全局性的安全配置。 但无法通过job等相对细粒度的来控制使用者的权限。但它可以借助相关的插件实现细颗粒的权限控制。 插件&#xff1a; Role-based Authorization Strategy 需要在configure global security中配置授权策略如下&#xff1a; 保存后&#x…

javaEE初阶————多线程初阶(2)

今天给大家带来第二期啦&#xff0c;保证给大家讲懂嗷&#xff1b; 1&#xff0c;线程状态 NEW安排了工作还未开始行动RUNNABLE可工作的&#xff0c;或者即将工作&#xff0c;正在工作BLOCKED排队等待WAITING排队等待其他事TIMED_WAITING排队等待其他事TERMINATED工作完成了 …