谷粒商城-基础篇-Day01-环境准备

一、搭建环境

创建五个模块

1、gulimall-member(会员模块)

2、gulimall-order(订单模块)

3、gulimal-product(商品服务模块)

4、gulimall-ware(仓储服务模块)

5、gulimall-coupon(优惠卷模块)

引入spring-web和openfeign的依赖

在这里插入图片描述

整合MybatisPlus

1、导入数据源

2、配置

1、配置数据源:

​ (1)、导入数据库的驱动

​ (2)、在application.yml配置数据源相关信息

2、配置MyBatis-Plus

​ 使用@MapperScan

​ 告诉Mybatis-Plus,Sql映射文件的位置

mybatis-plus:
  config-location: classpath:/mapper/**/*.xml

eg:

spring:
  datasource:
    username: root
    password: "20020630"
    url: jdbc:mysql://192.168.205.128:3306/gulimall_wms?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&useSSL=false
    driver-class-name: com.mysql.cj.jdbc.Driver
mybatis-plus:
  config-locations: classpath:/mapper/**/*.xml
  #统一配置id主键自增
  global-config:
    db-config:
      id-type: auto

利用逆向工程生成相关代码

进行相关接口测试

二、将微服务添加到nacos注册中心中

common模块导入alibaba.cloud

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-alibaba-dependencies</artifactId>
            <version>2.2.5.RELEASE</version>
        </dependency>
    </dependencies>
</dependencyManagement>

导入nacos依赖

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    <version>2.2.5.RELEASE</version>
</dependency>

添加配置

spring:
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
        #服务名称
  application:
    name: gulimall-coupon

使用注解开启服务控制与发现

在微服务模块的启动类上

@EnableDiscoveryClient

已经注册到nacos中

在这里插入图片描述

将其他模块的微服务用同样的方法都注册到nacos中

三、OpenFein测试远程调用

测试:使得member(会员)模块能远程调用coupon模块(优惠卷)

在优惠卷模块的contoller中添加一个查询优惠卷的方法

在member模块的pom文件下添加远程调用依赖

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
@RequestMapping("/member/list")
public R memberCoupons(){

    //使用假数据模拟
    CouponEntity coupon=new CouponEntity();
    coupon.setCouponName("满100减20");
    return R.ok().put("coupons",coupon);
}

想要在会员模块远程调用这个方法

创建一个接口放在feign包下
使用@FeignClien指明要调用的服务名称

//注册中心中coupon的服务名
@FeignClient("gulimall-coupon")
public interface CouponFeinService {
//注意:这里要填路径全称
    @RequestMapping("coupon/coupon/member/list")
    public R memberCoupons();
}

开启远程调用

@EnableFeignClients(basePackages = "com.atguigu.gulimall.member.feign")

在contoller中添加一个测试方法

@Autowired
    private CouponFeinService couponFeinService;

    //远程调用优惠卷服务
    @RequestMapping("/coupons")
    public R test(){
        MemberEntity memberEntity = new MemberEntity();
        memberEntity.setNickname("张三");

        R r = couponFeinService.memberCoupons();
        return R.ok().put("member",memberEntity).put("coupons",r.get("coupons"));

    }

新版的spring-boot需要loadbalancer进行负载均衡

   <dependency>
       <groupId>com.alibaba.cloud</groupId>
       <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
       <version>2.2.5.RELEASE</version>

<!--不使用ribbon进行客户端负载均衡-->
       <exclusions>
           <exclusion>
               <groupId>org.springframework.cloud</groupId>
               <artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
           </exclusion>
       </exclusions>
   </dependency>
<!--   使用loadbalancer进行客户端负载均衡-->
   <dependency>
       <groupId>org.springframework.cloud</groupId>
       <artifactId>spring-cloud-starter-loadbalancer</artifactId>
       <version>2.2.7.RELEASE</version>
   </dependency>

访问地址http://localhost:8000/member/member/coupons

在这里插入图片描述

四、从配置中心获取配置文件

在common包下导入

<!--    配置中心做配置管理-->
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        <version>2.2.5.RELEASE</version>
    </dependency>

测试:

在coupon模块下创建bootstrap.properties(这个配置文件加载的优先级最高)

spring:
  application:
  name: gulimall-coupon

  cloud:
    nacos:
      config:
        server-addr: 127.0.0.1:8848

在本地resource创建application.properties

自定义两个数据

coupon.user.name=zhangsan
coupon.user.age=18

在controller中获取application配置文件中的内容

@Value("${coupon.user.name}")
private String name;
@Value("${coupon.user.age}")
private String age;

@RequestMapping("/test")
public R test(){
    return R.ok().put("name",name).put("age",age);
}

访问localhost:7000/coupon/coupon/test

在这里插入图片描述

这样在工程中加载配置文件,修改起来非常麻烦

所有使用nacos管理配置文件

在nacos中创建一个配置文件gulimall-coupon

在这里插入图片描述

由于我的spring-boot版本高

需要导入

<dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-bootstrap</artifactId>
   <version>3.1.3</version>
</dependency>

配置热更新

使用@RefreshScope注解开启动态更新配置文件

为每个微服务配置独立的命名空间

cloud:
  nacos:
    config:
      server-addr: 127.0.0.1:8848
      #配置命名空间为gulimall-coupon
      namespace: 56b83f9e-eb52-4b48-b0ad-c31a3a46e709

为每个微服务配置分组,使用配置分组区分环境,dev,prod

在这里插入图片描述

cloud:
  nacos:
    config:
      server-addr: 127.0.0.1:8848
      #配置命名空间为gulimall-coupon
      namespace: 56b83f9e-eb52-4b48-b0ad-c31a3a46e709
      #设置分组为dev环境
      group: dev

在这里插入图片描述

同时加载多配置集

微服务的任何配置信息,任何配置文件都可以放在配置中心中

将原来的applciation.yml

spring:
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
  application:
    name: gulimall-coupon


  datasource:
    username: root
    password: "20020630"
    url: jdbc:mysql://192.168.205.128:3306/gulimall_sms?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&useSSL=false
    driver-class-name: com.mysql.cj.jdbc.Driver
mybatis-plus:
  config-locations: classpath:/mapper/**/*.xml
  #统一配置id主键自增
  global-config:
    db-config:
      id-type: auto


server:
  port: 7000

拆分出来

mybatis.yml

mybatis-plus:
  config-locations: classpath:/mapper/**/*.xml
  #统一配置id主键自增
  global-config:
    db-config:
      id-type: auto

datasource.yml

spring:
  datasource:
    username: root
    password: "20020630"
    url: jdbc:mysql://192.168.205.128:3306/gulimall_sms?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&useSSL=false
    driver-class-name: com.mysql.cj.jdbc.Driver

other.yml

server:
  port: 7000

spring:
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
  application:
    name: gulimall-coupon

修改bootstrap.yml使用 extension-configs同时加载多个配置文件

spring:
  application:
  name: gulimall-coupon

  cloud:
    nacos:
      config:
        server-addr: 127.0.0.1:8848
        #配置命名空间为gulimall-coupon
        namespace: 56b83f9e-eb52-4b48-b0ad-c31a3a46e709
        #设置分组为dev环境
        extension-configs:
          - data-id: datasource.yml
            group: dev
            refresh: true   #热更新

          - data-id: mybatis.yml
            group: dev
            refresh: true

          - data-id: other.yml
            group: dev
            refresh: true
          - data-id: gulimall-coupon.properties
            group: dev
            refresh: true

五、Gateway

创建一个model名字为gulimall-gateway继承gulimall-common模块

引入gateway依赖

将gulimall-gateway添加到nacos注册中心中

spring:
  application:
    name: gulimall-gateway
  cloud:
    nacos:
      config:
        server-addr: 127.0.0.1
        name: gulimall-gateway

server:
  port: 88

在启动类上开启服务发现

@EnableDiscoveryClient

启动测试:

Failed to configure a DataSource: ‘url’ attribute is not specified and no embedded datasource could be configured.

这是因为gulimall-gate中引入了mybatis的依赖

没有配置数据源导致报错

在启动类上添加排除即可

@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})

给网关添加一个断言

gateway:
  routes:
    - id: test_route
      uri: https://www.baidu.com/
      predicates:
        - Query=url,baidu

当访问的参数url=baidu的时候会自动跳转到https://www.baidu.com/

测试:

http://localhost:88/?url=baidu

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据引用中提供的信息,谷粒商城是一个B2C模式的电商平台,主要销售自营商品给客户。B2C模式指的是商对客的模式,即商家直接向消费者销售商品和服务。谷粒商城使用微服务架构,这是一种将应用程序拆分成独立且可独立开发、部署和扩展的小型服务的架构。引用还提到谷粒商城的技术涵盖微服务架构、分布式、全栈、集群、部署和自动化运维等方面。 因此,从前慢-谷粒商城章6主要讨论的可能是谷粒商城的技术方面,包括微服务架构、分布式、全栈、集群、部署和自动化运维等内容。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [从前慢-谷粒商城章1](https://blog.csdn.net/m0_67391121/article/details/125383572)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [2020年谷粒商城md笔记](https://download.csdn.net/download/ZHUXIUQINGIT/12543161)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值