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


    一.商城项目总体架构

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

    二.环境搭建代码

    1.项目架构

    1. 建立父工程 pom文件
     >聚合服务>
        >pom>
        >
            >gulimall-coupon>
            >gulimall-member>
            >gulimall-order>
            >gulimall-product>
            >gulimall-ware>
            >renren-fast>
            >renren-generator>
            >gulimall-common>
            >gulimall-common>
            >gulimall-gateway>
        >
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    1. 建立每个子工程(微服务)
    2. 建立公共服务模块,即可以将公共工具类,公共pom引入放入公共工具类
     >
            >gulimall>
            >com.atguigu.gulimall>
            >0.0.1-SNAPSHOT>
        >
        >4.0.0>
    
        >gulimall-common>
        >每一个微服务公共的依赖,bean,工具类等>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    1. 其他服务引入该公共服务模块
      >
            >com.atguigu.gulimall>
            >gulimall-common>
            >0.0.1-SNAPSHOT>
        >
    
    • 1
    • 2
    • 3
    • 4
    • 5

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

    1. Nacos依赖引入
     <!--        服务注册/发现-->
    >
        >com.alibaba.cloud>
        >spring-cloud-starter-alibaba-nacos-discovery>
    >
    
    • 1
    • 2
    • 3
    • 4
    • 5
    1. 开启注解驱动
    @EnableDiscoveryClient
    @SpringBootApplication
    public class GulimallCouponApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(GulimallCouponApplication.class, args);
        }
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    1. 配置Nacos注册中心地址以及该微服务名称
    spring:
      cloud:
        nacos:
          discovery:
            server-addr: 127.0.0.1:8848
      application:
        name: gulimall-coupon
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    1. Nacos中会有名称对应地址的注册

    3.远程调用Feign

    1. 引入pom文件
            >
                >org.springframework.cloud>
                >spring-cloud-starter-openfeign>
            >
    
    • 1
    • 2
    • 3
    • 4
    1. 注意被调用服务需要在Nacos注册中心中注册
    2. 调用者编写接口
    /**
     * 这是一个声明式远程调用
     */
    @FeignClient("gulimall-coupon")
    public interface CouponFeignService {
    
        @RequestMapping("/coupon/coupon/member/list")
        public R memberCoupons();
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    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
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    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
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    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"));
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    4.Nacos作为配置中心

    1. 引入pom文件
            
            <dependency>
                <groupId>com.alibaba.cloudgroupId>
                <artifactId>spring-cloud-starter-alibaba-nacos-configartifactId>
            dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    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
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    1. 配置也可在controller中获得
        @Value("${coupon.user.name}")
        private String name;
        @Value("${coupon.user.age}")
        private Integer age;
    
    • 1
    • 2
    • 3
    • 4
    1. 命名空间和配置分组的使用与配置
      命名空间:每个微服务创建自己的命名空间
      配置分组:区分环境(dev,test,prop)

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

    1. 引入依赖
            <dependency>
                <groupId>org.springframework.cloudgroupId>
                <artifactId>spring-cloud-starter-gatewayartifactId>
            dependency>
    
    • 1
    • 2
    • 3
    • 4
    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
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    1. 访问即可
  • 相关阅读:
    【javaEE】网络原理(传输层Part3)
    Vulnhub | DC: 4 |【实战】
    基于nodejs的电影交流网站
    脑供血不足是怎么回事?
    什么是React的虚拟DOM?它如何工作以提高性能?
    数据结构系列学习(九) - 循环队列(Circular_Queue)
    2713. 矩阵中严格递增的单元格数
    linux基本指令(下)
    Unirech腾讯云代充-云服务器登陆及远程连接常见问题
    案例分享|智慧化的西部机场
  • 原文地址:https://blog.csdn.net/qq_44724899/article/details/128105699