最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

聊聊SpringBoot整合Nacos自動刷新配置的問題

 更新時間:2022年01月28日 14:30:37   作者:Naylor  
Nacos作為SpringBoot服務的注冊中心和配置中心,本例將在配置文件中配置一個?cml.age=100?的配置項,程序中編寫一個方法讀取配置文件,并通過?Get--->/test/age?接口提供給瀏覽器訪問,感興趣的朋友跟隨小編一起看看吧

目的

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

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

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

  • 若配置文件中的 age 修改為 200 ,不用重新啟動程序,直接訪問 /test/age 接口,將獲取到最新的值 200
  • 若配置文件中沒有age 的配置項,或干脆沒有 cml 的配置項,訪問 /test/age 接口將返回默認的值 18

環(huán)境

  • SpringCloud:2020.0.3
  • SpringCloudAlibaba:2021.1
  • SpringBoot:2.5.2

pom

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

網上有人說,需要引入 actuator ,其實不用。本例中還集成了 spring-cloud-starter-oauth2 ,根本沒有 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 接口,發(fā)現每次都可以獲取到最新的 age 值。

到此這篇關于SpringBoot整合Nacos自動刷新配置的文章就介紹到這了,更多相關SpringBoot整合Nacos配置內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Java實戰(zhàn)項目練習之球館在線預約系統的實現

    Java實戰(zhàn)項目練習之球館在線預約系統的實現

    理論是遠遠不夠的,只有在實戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用java+SpringBoot+maven+freemark+Mysql實現一個球館在線預約系統,大家可以在過程中查缺補漏,提升水平
    2022-01-01
  • Java通過Modbus簡單實現數采的示例代碼

    Java通過Modbus簡單實現數采的示例代碼

    本文介紹了Java通過Modbus簡單實現數采,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-11-11
  • java使用FuncGPT慧函數對Mybatis進行一對一查詢映射處理

    java使用FuncGPT慧函數對Mybatis進行一對一查詢映射處理

    這篇文章主要介紹了java使用FuncGPT慧函數對Mybatis進行一對一查詢映射處理,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-09-09
  • 關于scanner.nextInt()等next()和scanner.nextIine()連用注意事項

    關于scanner.nextInt()等next()和scanner.nextIine()連用注意事項

    這篇文章主要介紹了關于scanner.nextInt()等next()和scanner.nextIine()連用注意事項,具有很好的參考價值,希望對大家有所幫助。
    2023-04-04
  • Java SpringBoot 使用攔截器作為權限控制的實現方法

    Java SpringBoot 使用攔截器作為權限控制的實現方法

    這篇文章主要介紹了Java SpringBoot 使用攔截器作為權限控制的實現,文中通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-10-10
  • java如何調用Groovy腳本

    java如何調用Groovy腳本

    這篇文章主要介紹了java如何調用Groovy腳本問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • 淺談Java數值類型的轉換與強制轉換

    淺談Java數值類型的轉換與強制轉換

    這篇文章主要介紹了Java數值類型的轉換與強制轉換,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-04-04
  • Spring Boot優(yōu)化后啟動速度快到飛起技巧示例

    Spring Boot優(yōu)化后啟動速度快到飛起技巧示例

    這篇文章主要為大家介紹了Spring Boot優(yōu)化后啟動速度快到飛起的技巧示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-07-07
  • java打印指定年月的日歷

    java打印指定年月的日歷

    這篇文章主要為大家詳細介紹了Java如何打印指定年月的日歷,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • 一文弄懂Java中ThreadPoolExecutor

    一文弄懂Java中ThreadPoolExecutor

    ThreadPoolExecutor是Java中的一個線程池實現,它可以管理和控制多個 Worker Threads,本文就詳細的介紹一下Java中ThreadPoolExecutor,具有一定的參考價值,感興趣的可以了解一下
    2023-08-08

最新評論

海阳市| 荔浦县| 万年县| 沂源县| 灵山县| 镇康县| 普定县| 兰坪| 凭祥市| 灵璧县| 阳西县| 桐庐县| 彩票| 凌云县| 孝感市| 武穴市| 睢宁县| 聊城市| 清水河县| 东兰县| 青铜峡市| 屯门区| 诸暨市| 黄浦区| 阿荣旗| 甘洛县| 页游| 郎溪县| 巩留县| 黄冈市| 定州市| 海口市| 江孜县| 新绛县| 勃利县| 南部县| 图片| 平乡县| 通州市| 团风县| 上思县|