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

一.商城项目总体架构

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

二.环境搭建代码

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. 访问即可
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值