sky-mall项目环境搭建

本文详细介绍了如何使用Docker部署MySQL、Redis以及Nacos,包括配置文件设置、启动参数以及数据持久化。同时,讲解了在Spring Cloud框架下如何使用Nacos作为注册中心和配置中心,实现服务的注册与发现以及动态配置。此外,还涵盖了OpenFeign的使用和Spring Cloud Gateway的配置,包括路由规则设定和断言。文章最后提到了版本兼容性问题,如Spring Cloud Hoxton SR8的相关组件版本。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MySQL
  • mysql
docker run -p 3306:3306 --name mysqlName01 -v /data/mysql/log:/var/log/mysql -v  /data/mysql/data:/var/lib/mysql -v  /data/mysql/conf:/etc/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7

>> 005ba6481be8e568b032868dd537713a3b9bd71849fa91d33376893693ab99c2
  • 修改mysql配置文件 (在 /etc/my.cnf 中设置默认的编码)
[client]

default-character-set = utf8

[mysqld]

default-storage-engine = INNODB

character-set-server = utf8

collation-server = utf8_general_ci #不区分大小写

collation-server = utf8_bin #区分大小写

collation-server = utf8_unicode_ci #比 utf8_general_ci 更准确

  • docker启动自动启动mysql
docker update mysql --restart=always
Redis
  • redis
docker run -p 6379:6379 --name redis  \
-v /data/redis/data:/data   \
-v /data/redis/conf/redis.conf:/etc/redis/redis.conf  \
-d redis redis-server /etc/redis/redis.conf 

>> e14d70b035e6ab268bee476aa4194660e2694a3218357d0c650f4e0919021eff
  • 操作redis
docker exec -it redisName01 redis-cli
  • 配置redis
appendonly yes  # 将数据持久化
Nacos

1、部署

docker pull nacos/nacos-server

docker run -d --name nacos -p 8848:8848  \
-v /data/cloud/nacos/application.properties:/home/nacos/conf/application.properties \
-e PREFER_HOST_MODE=hostname \
-e MODE=standalone \
nacos/nacos-server

4a18e87ae161a821089f543489e913ebc4bf81bb8a2e07647f11a6c1a5513805

2、使用—注册中心

# 1、添加依赖
spring-cloud-starter-alibaba-nacos-discovery ---> 2.2.0.RELEASE
spring-boot-parent ---> 2.2.5.RELEASE

# 2、配置yml文件
spring:
  cloud:
    nacos:
      discovery:
        server-addr: 192.168.88.120:8848
  application:
    name: member  # 需要指定应用名称用于注册


# 3、给需要注册到nacos的应用的启动类添加注解
@EnableDiscoveryClient # 开启服务的注册与发现功能

3、使用—配置中心

# 1、添加依赖

# 2、添加bootstrap.properties文件
spring.application.name=sky-mall-coupon
spring.cloud.nacos.config.server-addr=192.168.88.120:8848

# 3、启动项目并观察项目启动的日志
Located property source: CompositePropertySource {name='NACOS', propertySources=[NacosPropertySource {name='coupon.properties,DEFAULT_GROUP'}, NacosPropertySource {name='coupon,DEFAULT_GROUP'}]}

在这里插入图片描述

4、在Controller中添加注解 这里一定要注意是在Controller层不是在启动类

package com.tian.sky.mall.coupon.controller;

@RefreshScope
@RestController
@RequestMapping("/v1/sky/coupon/homesubject")
public class HomeSubjectController {
    @Autowired
    private HomeSubjectService homeSubjectService;

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

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

    @GetMapping("/index")
    public SkyResult index() {
        return Objects.requireNonNull(SkyResult.ok().put("name", name)).put("age", age);
    }
}
 

1、使用@Value@RefreshScope获取配置和动态刷新配置

2、如果配置中心和配置中都有了当前配置,优先使用配置中心

5、细节

  • 命名空间:用于配置隔离的,默认的新增的都在public空间,可以使用spring.cloud.nacos.config.namespace=命名空间Id指定配置空间
  • 配置集
  • 配置集Id:类似于配置文件名(DataId)
  • 配置分组:默认所有的配置集都是属于 DEFAULT_GROUP ,使用spring.cloud.nacos.config.group区分环境
spring.application.name=sky-mall-coupon
spring.cloud.nacos.config.server-addr=192.168.88.120:8848

spring.cloud.nacos.config.namespace=62f8e127-b923-4360-9005-67327e665fef
spring.cloud.nacos.config.group=prop

6、加载多个数据集

  • 配置多个配置文件

在这里插入图片描述

  • 修改配置

    • spring:
        application:
          name: sky-mall-coupon
      
        cloud:
          nacos:
            config:
              server-addr: 192.168.88.120:8848
              namespace: 62f8e127-b923-4360-9005-67327e665fef
              # 配置要加载的yml文件
              extension-configs[0]:
                data-id: datasource.yml
                group: dev
                refresh: true
              extension-configs[1]:
                data-id: mybatis.yml
                group: dev
                refresh: true
              extension-configs[2]:
                data-id: other.yml
                group: dev
                refresh: true
      
      
openfeign

1、使用

# 1、添加依赖
spring-cloud-starter-openfeign ---> 2.2.5.RELEASE

# 2、给需要远程调用别的服务的启动类上添加注解
@EnableFeignClients(basePackages = "com.tian.sky.mall.member") # // 开启远程调用

# 3、添加接口,并给接口设置注解
@FeignClient("coupon") # // coupon指注册到nacos上的服务名 
Geteway
  • 路由:匹配到断言,就可以路由到某个位置
  • 断言
  • 过滤器

在这里插入图片描述

1、添加依赖

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-dependencies</artifactId>
    <version>Hoxton.SR8</version>
    <type>pom</type>
    <scope>import</scope>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-gateway</artifactId>
    <version>2.2.5.RELEASE</version>
    <!--因为我当前项目的父模块中有spring-boot-starter-web依赖,会导致依赖冲突,所以要排除这两个依赖-->
    <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </exclusion>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-webflux</artifactId>
        </exclusion>
    </exclusions>
</dependency>

2、数据源排除

@EnableDiscoveryClient // nacos注册发现
@SpringBootApplication(exclude= {DataSourceAutoConfiguration.class}) // 排除数据源
public class SkyMallGatewayApplication {
    public static void main(String[] args) {
        SpringApplication.run(SkyMallGatewayApplication.class, args);
    }
}

因为这里没有使用数据库链接的东西,引入数据源以后就会报错,但是有不可避免的使用数据源所以这里可以让项目排除数据源。

3、添加nacos配置文件

spring:
  application:
    name: sky-geteway  # 模块名字

  cloud:
    nacos:
      config: # nacos作为配置中心的配置
        server-addr: 192.168.88.120:8848
        namespace: a84d6ad0-3d98-4e6b-bc0c-c7d9178d84ef
        extension-configs[0]:
          data-id: sky-gateway.yml
          group: dev
          refresh: true

4、添加gateway配置

spring:
  cloud:
    gateway:
      routes:
        - id: payment_routh #payment_routh    #路由的ID,没有固定规则但要求唯一,简易配合服务名
          uri: http://localhost:8001         #匹配后提供服务的路由地址
          predicates:
            - Path=/payment/get/**          #断言,路径相匹配的进行路由

        - id: payment_routh2 #payment_routh   #路由的ID,没有固定规则但要求唯一,简易配合服务名
          uri: http://localhost:8001          #匹配后提供服务的路由地址
          predicates:
            - Path=/payment/lb/**             #断言,路径相匹配的进行路由
版本问题

[Spring Cloud Hoxton Release Notes · spring-cloud/spring-cloud-release Wiki · GitHub](https://github.com/spring-cloud/spring-cloud-release/wiki/Spring-Cloud-Hoxton-Release-Notes)

Hoxton.SR8
2020-08-28

See all of the included issues and pull requests at the GitHub project. Hoxton.SR8 is compatible with Spring Boot 2.3.x and 2.2.x.

Spring Cloud Starter Build Hoxton.SR8
Spring Cloud Netflix 2.2.5.RELEASE
Spring Cloud Openfeign 2.2.5.RELEASE (issues)
Spring Cloud Config 2.2.5.RELEASE
Spring Cloud Aws 2.2.4.RELEASE
Spring Cloud Kubernetes 1.1.6.RELEASE (issues)
Spring Cloud Gateway 2.2.5.RELEASE (issues)
Spring Cloud Gcp 1.2.5.RELEASE
Spring Cloud Commons 2.2.5.RELEASE (issues)
Spring Cloud Sleuth 2.2.5.RELEASE (issues)
Spring Cloud Vault 2.2.5.RELEASE
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值