中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

SpringBoot整合Nacos自動刷新配置的方法

發布時間:2022-02-06 19:26:57 來源:億速云 閱讀:1462 作者:iii 欄目:開發技術

本篇內容主要講解“SpringBoot整合Nacos自動刷新配置的方法”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“SpringBoot整合Nacos自動刷新配置的方法”吧!

目的

Nacos作為SpringBoot服務的注冊中心和配置中心。

在NacosServer中修改配置文件,在SpringBoot不重啟的情況下,獲取到修改的內容。

本例將在配置文件中配置一個 cml.age=100 的配置項,程序中編寫一個方法讀取配置文件,并通過 Get--->/test/age 接口提供給瀏覽器訪問。

  • 若配置文件中的 age 修改為 200 ,不用重新啟動程序,直接訪問 /test/age 接口,將獲取到最新的值 200

  • 若配置文件中沒有age 的配置項,或干脆沒有 cml 的配置項,訪問 /test/age 接口將返回默認的值 18

環境

  • SpringCloud:2020.0.3

  • SpringCloudAlibaba:2021.1

  • SpringBoot:2.5.2

pom

pom中引入 nacos 相關配置:discovery,config,bootstrap

網上有人說,需要引入 actuator ,其實不用。本例中還集成了 spring-cloud-starter-oauth3 ,根本沒有 SpringSecurity 攔截的問題

問題:NacosServer和NacosClient是如何通訊的?如果是http接口方式來回調用,為什么沒有被SpringSecurity攔截?是否是rpc?

 <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring.cloud.dependencies}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>${spring.cloud.alibaba.dependencies}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    <dependencies>
        <!-- nacos-discovery -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
           <!--nacos config -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
         <!--bootstrap-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bootstrap</artifactId>
        </dependency>
    </dependencies>

配置文件

bootstrap.yml

server:
  port: 9556
spring:
  application:
    name: app
  profiles:
    active: test
    nacos:
      discovery:
        username: nacos
        password: nacos
        server-addr: 192.168.1.61:8848
      config:
        server-addr: 192.168.1.61:8848
        file-extension: yaml

app-dev.yml

此配置指 NacosServer 中的配置文件 app-dev.yml ,僅截取 cml.age 部分

cml:
   age: 100

代碼

  • RefreshScope注解:必須加在 controller 上面,加在主啟動內上面不好使。哪些資源需要自動刷新配置就在該controller上面添加此注解,可封裝一個 BaseController 。

  • @Value("${cml.age:18}"):讀取配置文件中的 cml.age 配置項值,賦給變量 age ,默認值為 18

  • getAge:獲取年齡接口

  • /test/age接口需要添加到 Security.permitAll

問題:RefreshScope注解為什么一定要添加在 controller 上面?為什么在主啟動類上面添加不生效

@RefreshScope
     @Api(tags = "測試 - api")
     @Slf4j
     @RestController
     @RequestMapping("/test")
     public class TestController {
     
         /**
          * 獲取配置文件中的 cml.age 內容,若未獲取到,默認值為18
          */
         @Value("${cml.age:18}")
         private String age;
         @ApiOperation(value = "獲取年齡 - 測試配置自動刷新", notes = "獲取年齡 - 測試配置自動刷新")
         @GetMapping("/age")
         public String getAge() {
             return age;
         }
     }

日志

開啟 nacos-refresh 日志,打印配置內容更新情況

logging:
  level:
     com.alibaba.cloud.nacos.refresh: debug

打印的日志:

2022-01-28 13:43:30.574 [com.alibaba.nacos.client.Worker.longPolling.fixed-192.168.1.61_8848-zjrkm-admin] DEBUG com.alibaba.cloud.nacos.refresh.NacosContextRefresher.innerReceive:136 - Refresh Nacos config group=DEFAULT_GROUP,dataId=identityQrCodeAdmin-service-cml-test.yaml,configInfo=spring:
  application:
    name: 

測試

在不重啟SpringBoot服務的情況,多次在 NacosServer 中修改 cml.age 配置項的值,然后通過瀏覽器訪問 /test/age 接口,發現每次都可以獲取到最新的 age 值。

到此,相信大家對“SpringBoot整合Nacos自動刷新配置的方法”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

海安县| 金湖县| 北京市| 山西省| 澎湖县| 顺昌县| 大庆市| 曲阳县| 陕西省| 太和县| 九台市| 环江| 双桥区| 永城市| 会东县| 益阳市| 武陟县| 蓬溪县| 林甸县| 郧西县| 两当县| 天津市| 合肥市| 德阳市| 河源市| 常德市| 仪陇县| 盐亭县| 志丹县| 昭苏县| 正镶白旗| 东阳市| 锡林郭勒盟| 灵山县| 清丰县| 桐庐县| 台安县| 怀柔区| 康马县| 中山市| 泰兴市|