Spring Boot

SpringBoot与Nacos整合

2020-12-03  本文已影响0人  程序员小杰

上一篇笔者已经介绍怎么安装Nacos了,这篇就开始重头戏。

搭建SpringBoot项目

image.png

一、加入依赖

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

nacos-config这个依赖就相当于SpringCloud Config,nacos-discovery这个依赖就相当于Eureka。

配置中心

先将nacos-discovery依赖进行注释,先来实现config
在项目中创建bootstrap.yml文件,加入以下配置

spring:
  application:
    name: naocs-service
  profiles:
    active: dev
  cloud:
    nacos:
      config:
      # 配置文件的环境
        group: ${spring.profiles.active}
      # 配置文件的格式
        file-extension: yaml
       # 配置中心的地址
        server-addr: 47.105.198.54:8848
      # 配置文件prefix
        prefix: ${spring.application.name}
     #命名空间
        namespace: mall

然后登录nacos,在nacos页面选择配置管理,创建配置文件


image.png

这里主要配置三个东西,Data ID、Group 以及要配置的内容。
Data Id 的格式是 ${prefix}-${spring.profile.active}.${file-extension}
${prefix} 的值,默认为 spring.application.name 的值
${spring.profile.active}表示项目当前所处的环境
${file-extension} 表示配置文件的扩展名

image.png
笔者配置:
Data Id:naocs-service-dev.yaml
Group :dev

提供测试的Controller

@RestController
@RefreshScope   #动态刷新
public class HelloController {

    @Value("${name}")
    private String name;
    @GetMapping
    public String hell(){
        return name;
    }
}

然后调用接口:http://localhost:8080/hello

image.png

注册中心

将nacos-discovery依赖注释放开
在nacos节点下增加配置

      discovery:
        server-addr: 47.105.198.54:8848
        group: ${spring.profiles.active}
        namespace: mall

启动项目,登录nacos。可以看到服务管理 -》服务列表中有注册上来的服务的相关信息。


image.png

注:如果配置中心与当前应用的配置文件都配置了相同的key,优先使用配置中心的配置。

加载多个配置文件

在实际开发中,我们不可能将所有的配置同时放在同一个配置文件中,那样会显得多而有杂。

spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    #MySQL配置
    driverClassName: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://47.105.198.54:3306/test?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
    username: root
    password: xxxx
  jackson:
    date-format: yyyy-MM-dd HH:mm:ss #如果使用字符串表示,用这行设置格式
    timezone: GMT+8
mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

接下来笔者会将product-dev.yaml里的有的配置拆分出来成为datasource-dev.yaml、mybatis-plus-dev.yaml。

spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    #MySQL配置
    driverClassName: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://47.105.198.54:3306/test?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
    username: root
    password: xxxx
mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

然后在应用程序的bootstrap.yml里的config节点下增加配置:

spring:
  profiles:
    active: ${DEPLOY_ENV}
  application:
    name: product
  cloud:
    nacos:
      config:
        group: ${spring.profiles.active}
        file-extension: yaml
        server-addr: ${NACOS}
        prefix: ${spring.application.name}
        namespace: ${nacos.client.namespace}
        extension-configs:
          - dataId: datasource-${spring.profiles.active}.yaml
            group: ${spring.profiles.active}
            #是否刷新
            refresh: true
          - dataId: mybatis-plus-${spring.profiles.active}.yaml
            group: ${spring.profiles.active}
            refresh: true
上一篇下一篇

猜你喜欢

热点阅读