谷粒商城1.项目简介和项目环境预搭建(项目概述和环境搭建代码)

news2024/10/7 10:24:14

一.商城项目总体架构

  • 从讲课篇看
    在这里插入图片描述
  • 从分块来看
    在这里插入图片描述
  • 项目知识概述
    在这里插入图片描述

二.环境搭建代码

1.项目架构

  1. 建立父工程 pom文件
 <description>聚合服务</description>
    <packaging>pom</packaging>
    <modules>
        <module>gulimall-coupon</module>
        <module>gulimall-member</module>
        <module>gulimall-order</module>
        <module>gulimall-product</module>
        <module>gulimall-ware</module>
        <module>renren-fast</module>
        <module>renren-generator</module>
        <module>gulimall-common</module>
        <module>gulimall-common</module>
        <module>gulimall-gateway</module>
    </modules>
  1. 建立每个子工程(微服务)
  2. 建立公共服务模块,即可以将公共工具类,公共pom引入放入公共工具类
 <parent>
        <artifactId>gulimall</artifactId>
        <groupId>com.atguigu.gulimall</groupId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>gulimall-common</artifactId>
    <description>每一个微服务公共的依赖,bean,工具类等</description>
  1. 其他服务引入该公共服务模块
  <dependency>
        <groupId>com.atguigu.gulimall</groupId>
        <artifactId>gulimall-common</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </dependency>

2.Nacos注册中心(微服务注册到Nacos中)

  1. Nacos依赖引入
 <!--        服务注册/发现-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
  1. 开启注解驱动
@EnableDiscoveryClient
@SpringBootApplication
public class GulimallCouponApplication {

    public static void main(String[] args) {
        SpringApplication.run(GulimallCouponApplication.class, args);
    }

}
  1. 配置Nacos注册中心地址以及该微服务名称
spring:
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
  application:
    name: gulimall-coupon
  1. Nacos中会有名称对应地址的注册

3.远程调用Feign

  1. 引入pom文件
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>
  1. 注意被调用服务需要在Nacos注册中心中注册
  2. 调用者编写接口
/**
 * 这是一个声明式远程调用
 */
@FeignClient("gulimall-coupon")
public interface CouponFeignService {

    @RequestMapping("/coupon/coupon/member/list")
    public R memberCoupons();
}
  1. 被调用者注册在Nacos中的映射 和其controller
    gulimall-coupon:127.0.0.1:8848
@RequestMapping("coupon/coupon")
public class CouponController {
 //远程服务调用示例
    @RequestMapping("/member/list")
    public R memberCoupons(){
        CouponEntity couponEntity = new CouponEntity();
        couponEntity.setCouponName("满一百减十");
        return R.ok().put("coupons", Arrays.asList(couponEntity));
    }
}
  1. 开启注解驱动并指定某包下全为feign
@EnableFeignClients("com.atguigu.gulimall.member.feign")
@EnableDiscoveryClient
@SpringBootApplication
public class GulimallMemberApplication {

    public static void main(String[] args) {
        SpringApplication.run(GulimallMemberApplication.class, args);
    }
}
  1. 调用者调用服务接口
    public R test(){
        MemberEntity memberEntity = new MemberEntity();
        memberEntity.setNickname("张三");
        R r = couponFeignService.memberCoupons();
        return R.ok().put("member",memberEntity).put("coupons",r.get("coupons"));
    }

4.Nacos作为配置中心

  1. 引入pom文件
        <!--        配置中心来做配置管理-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
  1. 利用bootstrap.properties动态拉取Nacos中的配置
spring.application.name=gulimall-coupon

spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.cloud.nacos.config.namespace=66f939a7-03fb-4a3a-9e8c-663cc37fd464
#加载默认配置文件 即名字为gulimall-coupon.properties的组名(如果没有则读本地的properties)
spring.cloud.nacos.config.group=prod

#可以读取多个配置文件
spring.cloud.nacos.config.ext-config[0].dataId=datasource.yml
spring.cloud.nacos.config.ext-config[0].group=dev
spring.cloud.nacos.config.ext-config[0].refresh=true

spring.cloud.nacos.config.ext-config[1].dataId=mybatis.yml
spring.cloud.nacos.config.ext-config[1].group=dev
spring.cloud.nacos.config.ext-config[1].refresh=true

spring.cloud.nacos.config.ext-config[2].dataId=other.yml
spring.cloud.nacos.config.ext-config[2].group=dev
spring.cloud.nacos.config.ext-config[2].refresh=true
  1. 配置也可在controller中获得
    @Value("${coupon.user.name}")
    private String name;
    @Value("${coupon.user.age}")
    private Integer age;
  1. 命名空间和配置分组的使用与配置
    命名空间:每个微服务创建自己的命名空间
    配置分组:区分环境(dev,test,prop)

5.gateway作为API网关(route->断言->过滤)

  1. 引入依赖
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-gateway</artifactId>
        </dependency>
  1. 配置routes规则
spring:
  cloud:
    gateway:
      routes:
        - id: baidu_route
          uri: https://www.baidu.com
          predicates:
          #符合参数中有url=baidu则转发到上述uri
            - Query=url,baidu
        - id: qq_route
          uri: https://www.qq.com
          predicates:
          #符合参数中url=qq
            - Query=url,qq
  1. 访问即可

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

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

相关文章

H2数据库端口占用

因为服务已经起来了&#xff0c;然后自己再想测试的时候&#xff0c;发现端口已经占用&#xff0c;找了好久在官网文档找到了对应的解决方案 意思是在服务端上&#xff08;就是我们的配置文件application.yml&#xff09;我们得加上tcp://localhost/也就是你的主机地址tcp://12…

Lambert (兰伯特)光照模型

漫反射的定义 漫反射是投射在粗糙表面上的光向各个方向反射的现象。当一束平行的入射光线射到粗糙的表面时&#xff0c;表面会把光线向着四面八方反射&#xff0c;所以入射线虽然互相平行&#xff0c;由于各点的法线方向不一致&#xff0c;造成反射光线向不同的方向无规则地反…

小程序赋能生鲜食品进销存,线上+物流系统两手抓

互联网、物联网和消费升级的多重影响下&#xff0c;生鲜食品市场的流通更加便捷。在国内外的生鲜产品的可用性不再受季节和地区的限制&#xff0c;需求也逐渐增加。 那么随着生鲜食品商城小程序和网上商城购物系统平台的数量逐渐增加&#xff0c;如何体现其价值在企业进销存系统…

基于EasyExcel锁定指定列导出数据到excel

基于EasyExcel锁定指定列导出数据到excel 大家好&#xff0c;我是llp。最近在做系统报表时中有一个需求时这样的&#xff0c;需要查询系统数据导出excel&#xff0c;并要求导出的excel列中有一些时锁定的有一些时不锁定的&#xff0c;即使实现动态列锁定的效果。看上去应该是一…

AWS 中文入门开发教学 39- AWS CLI - AWS认证 必须会的命令行工具

AWS CLI是什么 AWS Command Line Interface (AWS CLI) 是一种开源工具&#xff0c; 让您能够在命令行 Shell 中使用命令与 AWS 服务进行交互。 仅需最少的配置&#xff0c;即可使用 AWS CLI 开始运行命令&#xff0c;以便从终端 程序中的命令提示符实现与基于浏览器的 AWS 管理…

mysql基础知识篇(四)

1.MySQL 索引用的什么数据结构了解吗&#xff1f; MySQL 的默认存储引擎是 InnoDB&#xff0c;它采用的是 B树结构的索引。 B树&#xff1a;只有叶子节点才会存储数据&#xff0c;非叶子节点只存储键值。叶子节点之间使用双向指针连接&#xff0c;最底层的叶子节点形成了一个…

FTP服务配置和使用

FTP介绍 FTP&#xff08;文件传输协议20、21端口&#xff09;是典型的C/S架构的应用层协议&#xff0c;需要由服务端软件、客户端软件两个部分共同实现文件传输协议。FTP是客户端和服务器之间的连接是可靠的保证。 FTP是一种文件传输协议&#xff0c;它支持两种模式&#xff…

集合框架----源码解读LikedHashSet篇

1.官方介绍 Hash表和链表实现了Set接口&#xff0c;具有可预测的迭代顺序。该实现与HashSet的不同之处在于它维护了一个贯穿其所有条目的双向链表。该链表定义了迭代顺序&#xff0c;即元素插入集合的顺序(插入顺序)。注意&#xff0c;如果一个元素重新插入到集合中&#xff0c…

Git---idea中git的基本操作

idea中使用git仓库 idea中配置git仓库&#xff1a; 首先idea配置git仓库的位置 配置完成之后&#xff0c;有两种创建仓库的方式 从本地配置git仓库&#xff1a; idea本身设置好的&#xff0c;直接下一步就好 从远程克隆仓库&#xff1a; 如果远程仓库没有的话可以绑定完…

如何从 FastReport VCL 中将报表导出为PNG格式?

FastReport VCL是用于在软件中集成商务智能的现代解决方案。它提供了可视化模板设计器&#xff0c;可以访问最受欢迎的数据源&#xff0c;报告引擎&#xff0c;预览&#xff0c;将过滤器导出为30多种格式&#xff0c;并可以部署到云&#xff0c;Web&#xff0c;电子邮件和打印中…

openvswitch group hash实现代码分析

代码分析 ovs版本是2.11.0&#xff0c;linux版本是linux-3.10.0-693.21.1.el7。 只拿ovs实现的group hash和dp_hash举例分析代码&#xff0c;通过一个点一个功能切入代码&#xff0c;漫无目的看代码是很难看懂的&#xff0c;必须带着一个疑问看代码&#xff0c;点多了全面开花…

降低点云密度的几种方法(含python代码)

本文只是对学习过程中的点云密度降采样的几种方法做一个记录&#xff0c;原文参考知乎Python点云数据处理(四)点云下采样 - 知乎 (zhihu.com) 本文介绍python点云数据处理中的点云下采样算法和关键点算法以及在点云工具箱软件中的实现。由于点云的海量和无序性&#xff0c;直接…

Java基于springboot+vue的房屋出租租房系统 前后端分离

伴随着全球信息化发展&#xff0c;行行业业都与计算机技术相衔接&#xff0c;计算机技术普遍运用于各大行业&#xff0c;房屋出租管理系统便是其中一种。实施计算机系统来管理可以降低大学生租房管理的成本&#xff0c;使整个大学生租房的发展和服务水平有显著提升。 本论文主要…

umask 设置文件权限掩码

我们在创建文件或者目录时&#xff0c;看到的权限往往和我们设置的不一样&#xff0c;原因就在于创建文件时要受到 umask的影响。 目录 一、实际情景介绍 二、文件权限掩码 1、什么是权限掩码&#xff1f; 2、权限掩码的作用过程 3、设置权限掩码的两种方式 (1) umask 命…

【java基础系列】14- Java的内部类与常用类

Java的内部类与常用类 1、内部类 1.1 内部类的分类 成员内部类静态内部类局部内部类匿名内部类 1.2 什么是内部类&#xff1f; 概念&#xff1a;在一个类的内部再定义一个完整的类。特点&#xff1a; 编译之后可生成独立的字节码文件。内部类可直接访问外部类的私有成员&a…

【HIT-OSLAB-实验报告】

文章目录前言实验 0 环境的搭建实验原理&材料实验流程建议实验1 输出硬件参数实验内容基础知识实验代码实验结果实验2 实现系统调用实验内容whoami()评分标准基础知识实验代码实验结果实验3 进程运行轨迹的跟踪实验内容基础知识实验代码实验结果结合自己的体会 从程序设计者…

Elasticsearch

一、Spring Data 1、简介 Spring Data 是一个用于简化数据库、非关系型数据库、索引库访问&#xff0c;并支持云服务的开源框架。Spring Data 可以极大的简化JPA的写法&#xff0c;可以在几乎不用写实现的情况下&#xff0c;实现对数据库的访问和操作。除了 CRUD 之外&#xff…

作业-11.29

将txt中的单词转到数据库中 #include <stdio.h> #include <sqlite3.h> #include <stdlib.h> #include <string.h> void do_insert(sqlite3* db, int id, char word[], char jieshi[]); void txt_todatabase(sqlite3* db); int main(int argc, const ch…

DevExpress FMX Data Grid全面编辑和定制

DevExpress FMX Data Grid全面编辑和定制 FMX数据网格(CTP)FireMonkey(FMX)的高性能数据网格组件&#xff0c;具有集成的主细节和数据分组支持。它被优化并构建为与RAD Studio/Delphi/CBuilder一起使用。它支持Windows、Android和macOS平台。 DevExpress FMX数据网格功能强大&a…

redis介绍和理解

官网 介绍: https://www.bilibili.com/video/BV1Fd4y1T7pD/?spm_id_from333.337.search-card.all.click&vd_source4c263677a216945c0d21ca65ee15a5f9 Redis是一个key value的数据库&#xff0c;基于内存、分布式、可选持久性的键值对(Key-Value)存储数据库。 https://ww…