工作中的點點滴滴-Nacos配置中心的無法獲取到數據

背景:

  新的一個項目使用Nacos做爲數據配置中心,在開發過程中通常會將一些需要變更的參數、變量等從代碼中分離出來獨立管理,以獨立的配置文件的形式存在。目的是讓靜態的系統工件或者交付物(如 WAR,JAR 包等)更好地和實際的物理運行環境進行適配。配置管理一般包含在系統部署的過程中,由系統管理員或者運維人員完成這個步驟。配置變更是調整系統運行時的行爲的有效手段之一。Nacos可以作爲配置中心,存儲和管理配置信息。首先相比較apollo和zk,他更加的輕量級,並且也同時支持集羣模式來保證高可用。

  項目使用的是Spring Boot框架,版本是2.4.10的。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.4.10</version>
    <type>pom</type>
</dependency>

  然後Nacos的依賴使用的是boot,這裏需要注意區分一下boot和cloud的兩個jar包。因爲我們的項目中是沒有明顯以來spring cloud的。所以爲了避免boot-starter和cloud同時加載一些bean導致亂七八糟的問題,我們這裏就採用的是com.alibaba.boot,版本是0.2.10的。

<dependency>
    <groupId>com.alibaba.boot</groupId>
    <artifactId>nacos-config-spring-boot-starter</artifactId>
    <version>0.2.10</version>
</dependency>

  然後yml配置如下

nacos:
  config:
    server-addr: 127:0:0:1:8848

 啓動程序

@SpringBootApplication
@NacosPropertySource(dataId = "example", autoRefreshed = true)
public class NacosTestApplication {
    public static void main(String[] args) {
        SpringApplication.run(NacosTestApplication.class, args);
    }
}

獲取值

@Controller
@RequestMapping("config")
public class ConfigController {
    @NacosValue(value = "${username:false}", autoRefreshed = true)
    private String username;

    @GetMapping(value = "/get")
    @ResponseBody
    public String get() {
        return username;
    }
}

 

  項目啓動失敗

 

 在spring boot 2.4之後刪掉了ConfigurationBeanFactoryMetadata。在項目啓動的時候創建Bean失敗。所以這裏我就直接把spring-boot的版本降低到了2.3.9。然後再次啓動就成功了。

  啓動成功之後,但是獲取配置總是返回的是Null,這個其實也是boot的版本和Nacos的版本不一致導致的,所以我就一路把Nacos的版本從0.2.10降低到0.2.1 的時候可以啓動成功,並且能夠成功的獲取到數據了。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章