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

news2025/2/26 18:59:41

学成在线模块工程

  • 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.coloradmin.cn/o/2279410.html

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

相关文章

免费送源码:Java+ssm+MySQL Springboot卫生院儿童预防接种系统 计算机毕业设计原创定制

摘 要 儿童预防接种工作实行网络信息化管理&#xff0c;是我国预防规划工作发展的需要。接种信息实行网络信息化不仅是预防接种工作步入了一个新的台阶&#xff0c;更重要的是解决了多年接种疫苗过程种&#xff0c;预防接种剂次不清&#xff0c;难以全程有效接种的问题&#x…

OSPF的LSA的学习研究

OSPF常见1、2、3、4、5、7类LSA的研究 1、拓扑如图&#xff0c;按照地址表配置&#xff0c;激活OSPF划分相关区域并宣告相关网段 2、1类LSA&#xff0c;每台运行了OSPF的路由器都会产生&#xff0c;描述了路由器的直连接口状况和cost 可以看到R1产生了一条router lsa&#xff0…

JAVA:MyBatis 缓存机制详解的技术指南

1、简述 MyBatis是Java开发中常用的持久层框架之一&#xff0c;通过面向对象的方式操作数据库。为了提高系统性能&#xff0c;MyBatis提供了两级缓存机制&#xff1a;一级缓存&#xff08;本地缓存&#xff09;和二级缓存&#xff08;全局缓存&#xff09;。本文将详细讲解MyB…

前后端分离的Java快速开发平台

采用SpringBoot3.x、Shiro、MyBatis-Plus、Vue3、TypeScript、Element Plus、Vue Router、Pinia、Axios、Vite框架&#xff0c;开发的一套权限系统&#xff0c;极低门槛&#xff0c;拿来即用。设计之初&#xff0c;就非常注重安全性&#xff0c;为企业系统保驾护航&#xff0c;…

数据结构:栈和队列详解(上)

一.栈 1.概念与结构&#xff1a; 栈&#xff1a;一种特殊的线性表&#xff0c;只允许在顺序表的一段插入和删除数据&#xff0c;进行插入和删除的一端叫做栈顶&#xff0c;另外一端则叫做栈底&#xff0c;而我们将在栈顶插入数据叫做压栈&#xff08;入栈或进栈&#xff09;&a…

初识go语言之指针用法

一、环境准备 安装go语言编译环境&#xff0c;官网地址&#xff1a;https://go.dev/dl/ 或者 https://golang.google.cn/dl/ 点击下载按提示安装即可 vscode 安装go语言扩展 测试 package mainimport "fmt"func main() {fmt.Println("Hello, World!") …

python(25) : 含有大模型生成的公式的文本渲染成图片并生成word文档(支持flask接口调用)

公式样例 渲染前 \[\sqrt{1904.615384} \approx 43.64\] 渲染后 安装依赖 pip install matplotlib -i https://mirrors.aliyun.com/pypi/simple/ requestspip install sympy -i https://mirrors.aliyun.com/pypi/simple/ requestspip install python-docx -i https://mirro…

国产文本编辑器EverEdit - 恢复最近的选区

1 恢复最近的选区 1.1 应用场景 如果用户选择了一些文本&#xff0c;特别是多选区选择&#xff0c;在选择的过程中出现失误&#xff0c;导致选区丢失&#xff0c;一般的做法是骂骂咧咧再选一次&#xff0c;使用EverEdit就没有这个烦恼&#xff0c;EverEdit内置了恢复最近的选区…

54,【4】BUUCTF WEB GYCTF2020Ezsqli

进入靶场 吓我一跳&#xff0c;但凡放个彭于晏我都不说啥了 提交个1看看 1 and 11 1# 还尝试了很多&#xff0c;不过都被过滤了&#xff0c;头疼 看看别人的WP 竟然要写代码去跑&#xff01;&#xff01;&#xff01;&#xff0c;不会啊&#xff0c;先用别人的代码吧&#xf…

【unity进阶篇】unity如何实现跨平台及unity最优最小包体打包方式(.NET、Mono和IL2CPP知识介绍)

考虑到每个人基础可能不一样&#xff0c;且并不是所有人都有同时做2D、3D开发的需求&#xff0c;所以我把 【零基础入门unity游戏开发】 分为成了C#篇、unity通用篇、unity3D篇、unity2D篇。 【C#篇】&#xff1a;主要讲解C#的基础语法&#xff0c;包括变量、数据类型、运算符、…

实力认证 | 海云安入选《信创安全产品及服务购买决策参考》

近日&#xff0c;国内知名安全调研机构GoUpSec发布了2024年中国网络安全行业《信创安全产品及服务购买决策参考》&#xff0c;报告从产品特点、产品优势、成功案例、安全策略等维度对各厂商信创安全产品及服务进行调研了解。 海云安凭借AI大模型技术在信创安全领域中的创新应用…

联想装系统后触摸板无法设置双指手势

我的一个电脑是联想小新air13&#xff0c;装Windows10系统后&#xff0c;没有找到设置触摸板手势的地方 也没有“装置设定值” 这个选项 经查询&#xff0c;需要去联想网站搜索驱动&#xff0c;下载了一个“Lenovo联想驱动管理” &#xff0c;更新了下触摸板驱动&#xff0c; …

ue5 制作,播放,停止动画蒙太奇

右键&#xff0c;动画蒙太奇 新建插槽 把默认插槽选择为&#xff0c;自己新建的插槽 然后拖一个动画进去 input换成玩家0 就可以接收键盘事件 pawn 自动控制玩家换成玩家0 找到动画蓝图 把它化成我们那边蒙太奇里面的槽 第三步&#xff1a;第三人称角色蓝图 按下F…

一文大白话讲清楚webpack基本使用——1——完成webpack的初步构建

文章目录 一文大白话讲清楚webpack基本使用——1——完成webpack的初步构建1. 先回忆webpack是个啥2. webpack四大核心2.1 Entry(入口)2.2 Output(输出)2.3 Loader(加载器)2.4 Plugin(插件) 3. 按部就班实现webpack3.1 初始化项目3.2 完成项目骨架搭建3.3 实现webpack构建 一文…

迁移学习-详解

一、fasttext工具介绍 1 fasttext介绍 1.1 fasttext作用 作为NLP工程领域常用的工具包, fasttext有两大作用: 进行文本分类 训练词向量 1.2 fasttext工具包的优势 正如它的名字, 在保持较高精度的情况下, 快速的进行训练和预测是fasttext的最大优势. fasttext优势的原因:…

Mac 删除ABC 输入法

参考链接&#xff1a;百度安全验证 Mac下删除系统自带输入法ABC&#xff0c;正解&#xff01;_mac删除abc输入法-CSDN博客 ABC 输入法和搜狗输入法等 英文有冲突~~ 切换后还会在英文状态&#xff0c;可以删除 &#xff1b;可能会对DNS 输入有影响&#xff0c;但是可以通过复…

读取GPS文件中的坐标

不同厂家产生的gps不同&#xff0c;但MALA, impulse等厂家还是比较规范&#xff0c;格式基本一致。 1 格式对比 厂家1&#xff1a;128930 1 31.865250637 118.631077136 -87.226619530 -17.247052234 -20.881583506 -19.300643625 9.146650245 -5.089975857 4.000000000 2024…

【github 使用相关】GitHub Desktop桌面端基础操作 WIP 分支 提交pr

WIP 是 “Work In Progress”&#xff08;进行中的工作&#xff09;的缩写&#xff0c;WIP分支通常用来存放尚未完成或不稳定的代码&#xff0c;开发者可在WIP进行实验逐步完成某项功能、进行团队开发、修复重要BUG和多任务处理。 在 GitHub Desktop 上管理 WIP&#xff08;Wo…

C语言之装甲车库车辆动态监控辅助记录系统

&#x1f31f; 嗨&#xff0c;我是LucianaiB&#xff01; &#x1f30d; 总有人间一两风&#xff0c;填我十万八千梦。 &#x1f680; 路漫漫其修远兮&#xff0c;吾将上下而求索。 C语言之装甲车库车辆动态监控辅助记录系统 目录 一、前言 1.1 &#xff08;一&#xff09;…

日志模块新增配置日志根目录和项目模块功能

文章目录 1.日志模块新增监听器支持外部配置1.common-log4j2-starter项目结构2.修改log4j2.xml为log4j2-spring.xml&#xff08;这样可以解决读取外部配置但是提前创建目录的问题&#xff09;3.ApplicationEnvironmentPreparedListener.java 监听器读取配置4.spring.factories …