1.从gti上拉取代码

image.png
image.png

2.搭建运行环境

2.1导入SQL文件

image.png

3.导入Demo工程

image.png

4.前端页面

image.png
image.png
自己编写nginx的配置文件,实现对上述两个目录的代理。
server {
listen 9001;
server_name localhost;
location / {
root D:/lesson/heima/code/hm-mall-admin;
}
}

5.启动nacos

看:E:\张平\基础班全部\微服务\day01-SpringCloud01\day01-SpringCloud01\讲义

操作步骤

1)引入依赖

在cloud-demo父工程的pom文件中的中引入SpringCloudAlibaba的依赖:

  1. <!-- nacos -->
  2. <dependency>
  3. <groupId>com.alibaba.cloud</groupId>
  4. <artifactId>spring-cloud-alibaba-dependencies</artifactId>
  5. <version>2.2.6.RELEASE</version>
  6. <type>pom</type>
  7. <scope>import</scope>
  8. </dependency>

然后在子工程user-service和order-service中的pom文件中引入nacos-discovery依赖:

<!-- nacos -->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

2)配置nacos地址

在user-service和order-service的application.yml中添加nacos地址:

spring:
  cloud:
    nacos:
      server-addr: localhost:8848

6.配置网关

基础代码中并未包含gateway网关,也没有注册到nacos注册中心

1.创建网关服务

image.png

2.配置网关路由

在gateway服务的application.yml文件中,配置各个微服务的路由信息
image.png

# 网关端口
server:
  port: 10010
# 服务名称
spring:
  application:
    name: gatewayservice
  # nacos地址
  cloud:
    nacos:
      server-addr: localhost:8848
    # 网关的配置
    gateway:
      routes: # 网关路由配置
        - id: itemservice # 路由id,自定义,只要唯一即可
          uri: lb://itemservice
          predicates: # 路由断言,也就是判断请求是否符合路由规则的条件,结果通常是真或假
            - Path=/item/** # 这个是按照路径匹配,只要以/user/开头就符合要求,符合放行
        - id: userservice # 路由id,自定义,只要唯一即可
          uri: lb://userservice
          predicates: # 路由断言,也就是判断请求是否符合路由规则的条件,结果通常是真或假
            - Path=/user/**,/address/** # 这个是按照路径匹配,只要以/user/开头就符合要求,符合放行
        - id: orderservice # 路由id,自定义,只要唯一即可
          uri: lb://orderservice
          predicates: # 路由断言,也就是判断请求是否符合路由规则的条件,结果通常是真或假
            - Path=/order/**,/pay/** # 这个是按照路径匹配,只要以/user/开头就符合要求,符合放行
        - id: searchservice # 路由id,自定义,只要唯一即可
          uri: lb://searchservice
          predicates: # 路由断言,也就是判断请求是否符合路由规则的条件,结果通常是真或假
            - Path=/search/** # 这个是按照路径匹配,只要以/user/开头就符合要求,符合放行
      # 全局的跨域处理
      globalcors:
        add-to-simple-url-handler-mapping: true # 解决options请求被拦截问题
        corsConfigurations:
          '[/**]': # 哪些访问地址做跨域处理
            allowedOrigins: # 允许哪些网站的跨域请求
              - "http://localhost:9001"
              - "http://localhost:9002"
              - "http://127.0.0.1:9002"
              - "http://127.0.0.1:9001"
            allowedMethods: # 允许的跨域ajax的请求方式
              - "GET"
              - "POST"
              - "DELETE"
              - "PUT"
              - "OPTIONS"
            allowedHeaders: "*" # 允许在请求中携带的头信息
            allowCredentials: true # 是否允许携带cookie
            maxAge: 360000  # 这次跨域检测的有效期

image.png

3.在网关配置CORS

因为使用了前后端分离,所以前端的ajax请求存在跨域问题,需要在网关配置跨域。
请参考SpringCloudGateway部分课程,配置CORS跨域,允许4个地址跨域:

  • http://localhost:9001
  • http://localhost:9002
  • http://127.0.0.1:9001
  • http://127.0.0.1:900

    7.
    1.1分页查询商品

    分页查询
    image.png
    image.png
    用的是mybtispuls

    /**
       * 分页查询
       */
      @GetMapping("/list")
      public PageDTO<Item> page(@RequestParam("page") Integer currPage, @RequestParam("size") Integer size) {
    
           return itemService.pageSelect(currPage,size);
      }
    
      /**
       * 分页查询
       *
       */
      @Override
      public PageDTO<Item> pageSelect(Integer currPage, Integer size) {
          Page<Item> itemPage = new Page<>(currPage, size);
          QueryWrapper queryWrapper = new QueryWrapper();
          Page<Item> page = itemMapper.selectPage(itemPage, queryWrapper);
          return new PageDTO<>(page.getTotal(), page.getRecords());
      }
    

    2.根据id查询商品