spring-cloud微服务之【naocs-config(配置中心)-springcloud】--持续更新

启动配置管理

启动了 Nacos server 后,您就可以参考以下示例代码,为您的 Spring Cloud 应用启动 Nacos 配置管理服务了。

添加依赖(pom.xml)

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

完成pom.xml

<dependencies>
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-web</artifactId>
	</dependency>

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

	<dependency>
		<groupId>org.projectlombok</groupId>
		<artifactId>lombok</artifactId>
	</dependency>

	<dependency>
		<groupId>cn.hutool</groupId>
		<artifactId>hutool-all</artifactId>
	</dependency>
</dependencies>

基版本定义

<!--统一java包和版本号管理-->
    <properties>
        <java.version>1.8</java.version>
        <spring-boot.version>2.2.2.RELEASE</spring-boot.version>
        <spring-cloud.version>Hoxton.RELEASE</spring-cloud.version>
        <alibaba-cloud.version>2.2.0.RELEASE</alibaba-cloud.version>
        <maven.resources.plugin.version>2.6</maven.resources.plugin.version>
    </properties>

    <!--加载依赖管理-->
    <!--注意:如果使用dependencyManagement,只是对版本进行管理,不会直接引入jar  -->
    <!--是为了在这里配置版本,为了让子模块pom或者本pom的直接dependencies不单独配置版本 -->
    <!--如果没有版本,会先到这里找版本号,以免版本冲突  -->
    <dependencyManagement>
        <dependencies>
            <dependency>
                <!-- Import dependency management from Spring Boot -->
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring-boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>${alibaba-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>cn.hutool</groupId>
                <artifactId>hutool-all</artifactId>
                <version>5.5.8</version>
            </dependency>
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>1.18.18</version>
            </dependency>
            <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
                <version>2.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid-spring-boot-starter</artifactId>
                <version>1.1.10</version>
            </dependency>
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>5.1.28</version>
                <scope>runtime</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

注意:

  • 版本 2.1.x.RELEASE 对应的是 Spring Boot 2.1.x 版本。版本 2.0.x.RELEASE 对应的是 Spring Boot 2.0.x 版本,版本 1.5.x.RELEASE 对应的是 Spring Boot 1.5.x 版本。
  • 本例使用springCloud-H版本,springboot2.X

在 bootstrap.properties 中配置 Nacos server 的地址和应用名

spring.cloud.nacos.config.server-addr=127.0.0.1:8848

spring.application.name=example

或者使用bootstrap.yaml进行配置(方式2--优先选择)

#spring.cloud.nacos.config.server-addr 配置nacos连接地址
#spring.cloud.nacos.config.file-extension 制定配置文件的格式(目前支持:Properties和YAML )
#spring.cloud.nacos.config.extension-configs 如果还要额外加入其它的配置文件,接收是一个集合
#可以通过- dataId: 配置文件在dataId的名称

spring:
  cloud:
    nacos:
      config:
        server-addr: http://101.132.99.21:8848 
        #指定文件格式TEXT JSON XML YAML HTML Properties
        file-extension: yml
        #namespace: 这个是命名空间的uuid值(如果需要的话)这个主要是快速定位到某个命名空间【快速定位的意思】
        #附加配置 extension-configs:
        extension-configs:
          - dataId: wolfconfig.yml
  application:
    name: example
#${prefix}-${spring.profiles.active}.${file-extension}
#prefix 默认为 spring.application.name 的值,也可以通过配置项 spring.cloud.nacos.config.prefix来配置。
#spring.profiles.active 即为当前环境对应的 profile,详情可以参考 Spring Boot文档。
#注意:当 spring.profiles.active 为空时,对应的连接符 - 也将不存在,
#dataId 的拼接格式变成 ${prefix}.${file-extension}
#file-exetension 为配置内容的数据格式,可
#以通过配置项 spring.cloud.nacos.config.file-extension 来配置。目前只支持 properties 和 yaml 类型。

默认情况下,系统会按照上面的策略自动加载已项目名称为spring.application.name的名字等上面规则;

说明:

  • 之所以需要配置 spring.application.name ,是因为它是构成 Nacos 配置管理 dataId字段的一部分。【具体看下面定义】
  • 【重要】这里为什么需要使用bootstrap.application或者yml,因为在springcloud的中,系统级别的配置加载优先加载bootstrap.xx(properties或者yml)配置文件,然后在加载application.xx(properties或者yml)配置文件
  • namespace 命名空间下面可以包含很多配置文件,例如开发中一般分为dev开发、uat测试、prd_uat测试生产灰度环境、prd 这么多环境,这些环境下面包含不同的配置文件,这样就可以通过建立命名空间进行管理

  • 通过 Spring Cloud 原生注解 @RefreshScope 实现配置自动更新:
@RestController
@RequestMapping("/config")
@RefreshScope
public class ConfigController {
    @Value("${useLocalCache:false}")
    private boolean useLocalCache;

    @RequestMapping("/get")
    public boolean get() {
        return useLocalCache;
    }
}

注解说明
1、在springcloud中使用@RefreshScope配置表示刷新配置属性。
  • 首先通过调用 Nacos Open API 向 Nacos Server 发布配置:dataId 为example.properties,内容为useLocalCache=true

curl -X POST "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=example.properties&group=DEFAULT_GROUP&content=useLocalCache=true"

  • 运行 NacosConfigApplication,调用 curl http://localhost:8080/config/get,返回内容是 true。
  • 再次调用 Nacos Open API 向 Nacos server 发布配置:dataId 为example.properties,内容为useLocalCache=false

curl -X POST "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=example.properties&group=DEFAULT_GROUP&content=useLocalCache=false"

  • 再次访问 http://localhost:8080/config/get,此时返回内容为false,说明程序中的useLocalCache值已经被动态更新了。

说明:上面给nacos配置中心推送配置文件,可以可以通过直接发送请求推送,也可以直接通过在nacos配置中心直接修改配置文件后发布起作用。

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值