微服务框架及多模块开发

2023-05-16

目录

一,项目模式

二,项目架构图

三,案例演示

 主模块

公共子模块

子模块

添加页面公共资源


一,项目模式

电商模式:市面上有5种常见的电商模式,B2B、B2C、 C2B、 C2C、O2O; 1、B2B模式 B2B (Business to Business),是指 商家与商家建立的商业关系。如:阿里巴巴 2、B2C 模式 B2C (Business to Consumer), 就是我们经常看到的供应商直接把商品卖给用户,即“商对客” 模式,也就是通常说的商业零售,直接面向消费者销售产品和服务。如:苏宁易购、京东、 天猫、小米商城 3、C2B模式 C2B(CustomertoBusiness),即消费者对企业。先有消费者需求产生而后有企业生产,即先 有消费者提出需求,后有生产企业按需求组织生产 4、C2C模式 C2C (Customer to Consumer),客户之间自己把东西放上网去卖,如:淘宝,闲鱼 5、O2O模式 O2O即Online To Ofline,也即将线下商务的机会与互联网结合在了一起,让互联网成为线 下交易的前台。线上快速支付,线下优质服务。如:饿了么,美团,淘票票,京东到家

技术栈

  • 前端 html css js jquery freemarker vue

  • 基础 javaSE javaEE

  • 框架 spring springMVC springBoot mybatis mybatis-plus

  • 安全 shiro(spring security)

  • 微服务 springCloud springCloud alibaba

  • 数据库 mysql

  • 测试 junit jmeter

二,项目架构图

 简单介绍:

上图分为含有手机端和电脑端以及台式机端,(DDOS与防火墙是一个概念,因为有些系统只能在内网访问)。

往下走就有个主备模式,HAProoxy+Keepalived:属于一个中间件,作用是保存连接,维持Nginx集群,nginx收到请求就发送到网关。

当网关接收到Nginx反向代理的请求(为什么反向代理,隔离外界网络和内部网络),网关是保护外部请求与微服务之间的调用关系。

在我们调用微服务是是通过微服务的名称进行调用(这时网关就会找到微服务的配置中心处,找到是否存有你所需要的微服务名称,有就拉取资源)

RabbitMQ做异步处理。

三,案例演示

项目分为主模块(不需要存储数据,创建时选择maven项目即可)与其余子模块(由于需要访问数创建时需选择Springboot项目)

 主模块

1.在idea中基于maven方式创建主模块zmall,创建成功之后删除src目录即可。

目录结构如图

配置主模块pom.xml

<!--依赖版本的锁定-->
    <properties>
        <java.version>1.8</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <spring-boot.version>2.3.2.RELEASE</spring-boot.version>
        <spring-cloud.version>Hoxton.SR9</spring-cloud.version>
        <spring-cloud-alibaba.version>2.2.6.RELEASE</spring-cloud-alibaba.version>
    </properties>


    

dependencyManagement配置

<dependencyManagement>
	<dependencies>
        <!-- SpringBoot 依赖配置 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>${spring-boot.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    	<!--spring-cloud依赖配置-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>${spring-cloud.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <!--spring-cloud-alibaba依赖配置-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-alibaba-dependencies</artifactId>
            <version>${spring-cloud-alibaba.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

子模块定义

(当创建了子模块后需将定义子模块)如:

<modules>
    <module>zmall-common</module>
    <module>zmall-user</module>
</modules>

设置maven编译版本

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <configuration>
        <source>1.8</source>
        <target>1.8</target>
    </configuration>
</plugin>

公共子模块

1.基于maven方式创建zmall-common公共子模块。注:zmall-common公共模块只为其他模块提供依赖支持。

配置pom.xml

<dependencies>
        <!-- mybatis plus依赖 -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.4.0</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.44</version>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.56</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-freemarker</artifactId>
        </dependency>
</dependencies>

子模块

  1. 基于Spring Initialzr方式创建zmall-user用户模块。

  2. 配置pom.xml。设置父模块,并添加zmall-common公共模块的依赖支持。

<!-- 父模块 -->
<parent>
    <groupId>com.zking.zmall</groupId>
    <artifactId>zmall</artifactId>
    <version>1.0-SNAPSHOT</version>
</parent>
<dependencies>
    <dependency>
        <groupId>com.zking.zmall</groupId>
        <artifactId>zmall-common</artifactId>
        <version>1.0-SNAPSHOT</version>
    </dependency>
</dependencies>
<!-- 父模块 -->
<parent>
    <groupId>com.zking.zmall</groupId>
    <artifactId>zmall</artifactId>
    <version>1.0-SNAPSHOT</version>
</parent>
<dependencies>
    <dependency>
        <groupId>com.zking.zmall</groupId>
        <artifactId>zmall-common</artifactId>
        <version>1.0-SNAPSHOT</version>
    </dependency>
</dependencies>

配置application.yml

server:
  port: 8010
spring:
  application:
    name: zmall-user
  datasource:
    #type连接池类型 DBCP,C3P0,Hikari,Druid,默认为Hikari,HikariDataSource属于Mybatisplus依赖
    type: com.zaxxer.hikari.HikariDataSource
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/zmall?useUnicode=true&characterEncoding=UTF-8&useSSL=false
    username: root
    password: 123456
  freemarker:
    suffix: .html
    template-loader-path: classpath:/templates/
  mvc:
    static-path-pattern: /static/**

添加页面公共资源

1)将资料目录中的《易买网网页素材.zip》解压后,将其中Login.html和js/css/images等等添加到项目的templates和static目录下,最好请将Login.html重命名为login.html

2)导入资料目录中的common目录到项目的templates目录下

3)在login.html页面中的头部申明<!DOCTYPE html ....>修改成<!DOCTYPE html>(支持H5风格)

4)在login.html页面中通过<#include>指令引入common目录中的head.html

<#include 'common/head.html'>

 

5)创建UserController并定义login.html页面跳转方式


  

代码演示

package com.zking.zmall.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class UserController {

    @RequestMapping("/login.html")
    public String login(){
        return "login";
    }
}

 最后访问页面

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

微服务框架及多模块开发 的相关文章

  • C语言十进制转十六进制

    输入 xff1a 123 输出 xff1a 7B include lt stdio h gt int main int n scanf 34 d 34 amp n int a 100 int count int i 61 0 while 1
  • CentOS软件那么老为什么大家还要用它?

    作为一个专业的服务器系统 xff0c RHEL 系统理论上每一个软件包都有 RedHat 内部的人员负责维护 xff0c 这个维护包括长期 xff08 和系统生命周期一样长 xff09 的开发 更新 测试 运维等 也就是说你能从 RHEL
  • vscode配置C/C++调试环境

    转自作者知乎的原创文章 vscode配置C 43 43 调试环境 在环境变量path中添加mingw中bin后 在vscode界面侧边栏点击调试界面 xff0c 创建launch json文件 添加配置后保存就行 下为我的添加配置后自动生成
  • ROS通信机制~话题通信(Publisher&Subscriber)·笔记2

    系列文章目录 xff1a ROS开发 xff08 ubuntu xff09 笔记 1 嘻 嘻的博客 CSDN博客 ROS通信机制 服务通信 server amp client 笔记3 嘻 嘻的博客 CSDN博客 话题通信 理论模型 xff1
  • postman Windows的详细安装过程

    1 首先去postman官网下载postman 官网地址 xff1a Download Postman Get Started for Free https www postman com downloads 2 根据你浏览器下载的所在位置
  • 数据结构链表的结构体定义的理解(C语言)

    此理解有参考数据结构的教材和一些博主的文章 xff1b 1 先补充一下typedef在此处的基本用法 xff1a typedef可用来建立已经定义好的数据类型的别名 形式为 xff1a typedef 已有变量名 别名 通俗的来说就是给已有
  • ROS安装与Rviz的摄像头视频采集与标定

    文章目录 一 ROS的安装与配置1 添加 ROS 软件源 xff0c 将下列命令输入到 Ubuntu 的终端执行2 添加密钥 xff0c 将下列命令输入到 Ubuntu 的终端执行3 安装desktop full4 初始化rostep5 设
  • HTTP协议的基本格式

    目录 一 HTTP请求 1 1 首行 1 1 1 URL 1 1 2 方法 1 2 请求报头 xff08 header xff09 1 2 1 host 编辑 1 2 2 Content Length和Content Type 1 2 3
  • 思岚雷达win与ubuntu18.04连接并测试详细过程

    雷达简介 包含套件 雷达模组 xff08 内置pwm电机驱动 xff09 usb适配器 Micro USB线缆 电源线 接线方式 ps 雷达不需额外的电源供电 xff0c 直接使用电脑USB接口 xff0c 5V供电 驱动安装 USB 适配
  • c/c++常见字符串函数(strlen,strcmp,strcat,strcpy,strstr,strncpy,strncat,strncmp)的详解和自己编辑实现

    下面介绍c语言中指针与数组的面试题 再看下列题之前首先要知识储备 下面用c语言介绍常用字符串函数和进行编译 一 介绍strlen函数 unsigned int strlen char s 或size t strlen const char
  • 【C语言】学数据结构前必学的结构体struct详细

    佛祖说 xff0c 他可以满足程序猿一个愿望 程序猿许愿有生之年写出一个没有bug的程序 xff0c 然后他得到了永生 目录 1 结构体的声明与定义 1 1结构体是什么 xff1f 1 2为什么要有结构 xff1f 1 3结构体的声明 1
  • 数据结构哈希查找的C语言实现

    大家好 xff0c 我是练习编程时长两年半的昆工第一ikun xff0c 今天我们来分享查找算法中的一个 哈希查找 xff0c 哈希查找适用于有庞大的数据量时的查找 xff0c 是一种很好用的查找算法 xff0c 话不多说 xff0c 开团
  • 为什么很多程序员喜欢linux系统?

    a gt Linux哪些行业在运用 xff1f Linux系统运用极其广泛 xff0c 不少用户只知道windows xff0c 是因为 xff0c Linux的运用主要是在企业端 现在科技极其发达 xff0c 我们手机在手 xff0c 就
  • Linux Ubuntu下的标准IO相关库函数的介绍与使用

    大家好 xff0c 我是练习编程时长两年半的个人练习生昆工第一ikun xff0c 今天我们来分享一下标准IO相关函数库的介绍与使用 xff0c 话不多话 xff0c 开团 xff01 xff01 xff01 xff01 xff01 目录
  • Linux Ubuntu下的文件IO介绍及实例应用(C语言)

    大家好 xff0c 我是练习编程时长两年半的个人练习生昆工第一ikun xff0c 昨天咋们说了标准IO xff0c 今天咋们来分享文件IO xff0c 以及一个很有趣的实例 xff0c 给图片加密 xff0c 使其无法打开 话不多说 xf
  • 输入年月日得出该天是星期几(C语言)

    大家好 xff0c 我是练习编程时长两年半的个人练习生昆工第一ikun xff0c 昨天因为在写Thoughtworkers的2018年笔试题 xff0c 所以没有更新 xff0c 今天就先把笔试题中的一个函数分享出来 xff0c 该函数可
  • Linux下的UDP服务器客户端的搭建(C语言实现)

    大家好 xff0c 我是练习编程时长两年半的个人练习生昆工第一ikun xff0c 昨天我们说了搭建TCP的服务器和客户端 xff0c 今天我们就来分享一下UDP的服务器和客户端搭建 UDP的特点是无连接 xff0c 多个客户端可以发送消息
  • 使用STL库list类实现单双向约瑟夫环问题(C++)

    目录 一 单向约瑟夫环 1 问题描述 2 list类函数用法 xff08 1 xff09 list构造 xff08 2 xff09 list iterator迭代器 xff08 3 xff09 list容量 xff08 4 xff09 li
  • 使用Qt制作个人计算器

    我们知道windows系统有自带的计算器 xff0c 那么我们也可以用Qt制作一款类似的个人计算器 xff0c 实现整数的加减乘除括号运算 xff0c 界面设计使用Qt xff0c 计算使用逆波兰算法 xff0c 下面我就来分享一下个人计算
  • 使用Qt制作简易的图片查看器

    我们知道windows系统有自带的图片查看器 xff0c 那么我们也可以用Qt制作一款类似的图片查看器 xff0c 实现图片的打开查看以及图片的翻页 xff0c 下面我就来分享一下图片查看器的制作方法 目录 一 描述 二 代码实现 1 头文

随机推荐

  • 计算机网络第二章总结

    目录 1 1物理层的基本概念 1 2数据通信的基础知识 1 2 1数据通信系统的模型 1 2 2信道的几个基本概念 常用的编码方式 1 2 3信道的极限容量 1 3物理层下面的传输媒体 1 3 1导引型传输媒体 1 双绞线 2 同轴电缆 3
  • 假溢出的解决策略

    假溢出 xff1a 在顺序队列中 xff0c 队列出队时并没有像线性表那样使后面的元素往前移 为了解决假溢出 xff0c 常用的方法是把队列想成一个首尾相接的环 xff0c 这种叫循环队列 在循环队列的入队和出队操作中 xff0c 用到了求
  • C++之lambda函数(匿名函数)

    lambda函数简介 lambda函数是C 43 43 11标准新增的语法 xff0c 也称为lambda表达式或匿名函数 lambda函数的特点是 xff1a 距离近 简洁 高效和功能强大 优点 声明式编程风格 xff1a 就地匿名定义目
  • 远程桌面基本原理

    远程桌面基本原理 远程桌面是一种技术 xff0c 它允许用户通过互联网或局域网远程访问另一台计算机的桌面 这种技术可以让用户在不同的地方使用同一台计算机 xff0c 或者在同一地方使用不同的计算机 远程桌面技术在现代计算机应用中发挥着重要的
  • C++之迭代器

    迭代器 C 43 43 中 xff0c 迭代器就是类似于指针的对象 xff0c 但比指针的功能更丰富 xff0c 它提供了对对象的间接访问 xff0c 每个迭代器对象代表容器中一个确定的地址 举个例子 xff1a void test vec
  • C++之类模板全特化和偏特化

    类模板 类模板是通用类的描述 xff0c 使用任意类型 xff08 泛型 xff09 来描述类的定义 使用类模板的时候 xff0c 指定具体的数据类型 xff0c 让编译器生成该类型的类定义 注意 xff1a 函数模板中可以不指定具体数据类
  • C++之完美转发、移动语义(forward、move函数)

    完美转发 1 在函数模板中 xff0c 可以将 自己的参数 完美 地转发 给其它函数 所谓完美 xff0c 即 不仅能准确地转发参数的值 xff0c 还能保证被转发参数的左 右值属性不变 2 C 43 43 11标准引入了右值引用和移动语义
  • C++之异常处理

    异常 异常是面向对象语言 处理错误的一种方式 当一个函数出现自己无法处理的错误时 xff0c 可以抛出异常 xff0c 然后输的直接或者间接调用者处理这个错误 语法 捕获全部的异常 try 可能抛出异常的代码 throw异常对象 catch
  • C++之原子操作(atomic)

    原子操作 所谓原子操作是指不会被线程调度机制打断的操作 xff1b 这种操作一旦开始 xff0c 就一直运行到结束 xff0c 中间不会有任何 context switch xff08 切换到另一个线程 xff09 原子操作是不可分割的 x
  • C++之RAII机制

    RAIIResource acquisition is initialization的缩写 xff0c 意思是 资源获取即初始化 xff0c 其核心思想是利用C 43 43 对象生命周期的概念来控制程序的资源 它的技术原理很简单 xff0c
  • VsCode反应较慢(vscode卡顿,反应慢)

    简述 xff1a 这几天敲代码的时候发现vscode反应好慢 xff0c 有时候更改个样式 xff0c 也是同样 xff0c 然后就开始找原因 xff0c 之前开的代码自动保存 xff0c Git Autorefresh Files Aut
  • 【C++教学】第一课——头文件,全局命名空间,主函数的介绍

    头文件 初学者肯定疑惑为什么每次打代码都要写一个所谓的头文件 xff08 如 xff1a iostream xff09 xff0c 因为你所用的 cout gt gt 34 hello world 34 就是这个 是在iostream里的东
  • JavaWeb02(js基本语法&表单提交方式)

    一 xff0c js基本语法 1 jsp是什么 xff1f 实际上jsp就是Servlet xff0c 是一种可以用来开发web资源的技术 2 jsp运行原理 xff1f jsp文件先翻译成 java xff0c 在将其编译成 class
  • JavaWeb(分页)

    1 分页显示的步骤 xff1a xff08 1 xff09 确定每页显示的数据量 xff08 2 xff09 计算显示的页码 xff08 3 xff09 编写SQL语句 当数据多起来的时候 xff0c 记得需要一个容器将它包装起来 xff0
  • HTTP代理

    HTTP代理 xff08 HTTP Proxy xff09 是一种在网络中经常使用的技术 xff0c 允许客户端计算机通过指定的代理服务器来进行HTTP请求 在本文中 xff0c 我将介绍HTTP代理的基本原理 实现方法以及相关的应用和安全
  • LayUI项目之我的会议(送审以及排座)

    目录 一 xff0c 会议排座 1 前台编码 调试后的jsp代码 2 后台编码 1 图片工具类 2 js代码 3 SQL语句编写 4 子控制器 5 dao方法 三 图片处理 图片处理类 前台代码 后台接收 三 xff0c 会议送审 1 前台
  • Docker-宿主机与容器之间的文件拷贝

    目录 一 xff0c Docker运行MySQL容器 二 xff0c 数据卷 三 xff0c 数据卷容器 四 xff0c Dockerfile制作增强版 五 xff0c Docker制作自定义Tomcat 一 xff0c Docker运行M
  • 小程序框架

    目录 一 xff0c 框架 二 xff0c 响应的数据绑定 三 xff0c 页面管理 四 xff0c 基础组件 逻辑层 App Service 五 xff0c 小程序的生命周期 六 xff0c 注册页面 1 使用 Page 构造器注册页面
  • 小程序后台数据交互-个人中心

    目录 一 xff0c 获取用户昵称和头像 登录过程 二 xff0c 登录 小程序 三 xff0c 后台 小程序服器配置 一 xff0c 获取用户昵称和头像 登录过程 小程序登录 小程序可以通过微信官方提供的登录能力方便地获取微信提供的用户身
  • 微服务框架及多模块开发

    目录 一 xff0c 项目模式 二 xff0c 项目架构图 三 xff0c 案例演示 主模块 公共子模块 子模块 添加页面公共资源 一 xff0c 项目模式 电商模式 xff1a 市面上有5种常见的电商模式 xff0c B2B B2C C2