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

SpringBoot使用Nacos進行application.yml配置管理

 更新時間:2024年12月13日 10:45:06   作者:水w  
Nacos是阿里巴巴開源的一個微服務(wù)配置管理和服務(wù)發(fā)現(xiàn)的解決方案,它提供了動態(tài)服務(wù)發(fā)現(xiàn)、配置管理和?服務(wù)管理平臺,Nacos使用Raft協(xié)議保證配置的一致性,同時支持多種配置?格式,如properties、yaml等,本文介紹了SpringBoot使用Nacos進行application.yml配置管理

引言

Nacos是阿里巴巴開源的一個微服務(wù)配置管理和服務(wù)發(fā)現(xiàn)的解決方案。它提供了動態(tài)服務(wù)發(fā)現(xiàn)、配置管理和 服務(wù)管理平臺。Nacos的核心功能包括服務(wù)發(fā)現(xiàn)、配置管理和動態(tài)服務(wù)管理,使得微服務(wù)架構(gòu)下的服務(wù)治理 變得簡單高效。

Nacos的設(shè)計基于服務(wù)注冊與發(fā)現(xiàn)、配置管理、動態(tài)服務(wù)管理等核心功能,通過簡單的API和配置,實現(xiàn)了服 務(wù)的注冊與發(fā)現(xiàn)、配置的集中管理和動態(tài)更新。Nacos使用Raft協(xié)議保證配置的一致性,同時支持多種配置 格式,如properties、yaml等。

一、準備

首先需要在本地電腦上進行Nacos服務(wù)部署,默認端口是8848,部署成功之后,就可以去瀏覽器輸入localhost:8848進入nacos管理平臺。

二、nacos管理application.yml配置

1.nacos上新建命令空間和新建配置

首先,新建命名空間(如已存在則忽略),注意:命名空間ID可不填,不填則自動生成:

然后,進到nacos的管理頁面,在Nacos控制臺的左側(cè)導(dǎo)航欄進入配置列表,轉(zhuǎn)到“配置管理”頁面,點擊“+”來添加一個新的配置。

  • Data ID:統(tǒng)一按照這個格式來: 服務(wù)名 - 環(huán)境 . 后綴名。主要是因為后面要導(dǎo)入的bootstrap.yaml Spring默認的讀取格式就是這樣的。 
  • Group:分組可以自定義,沒有需求可以選擇默認分組DEFAULT_GROUP。
  • 命名空間:設(shè)置的命名空間ID。
  • 配置格式:yaml。

在配置內(nèi)容區(qū)域,輸入你想要暴露給Spring Boot應(yīng)用的配置信息。可以從SpringBoot獲取yml配置信息,將需要配置到config的信息復(fù)制配置到配置內(nèi)容中。

至此,nacos側(cè)配置項已完成,接下來進行SpringBoot項目配置改造。

2.SpringBoot項目配置改造

pom文件引入依賴

首先修改Spring Boot項目的pom.xml文件,在pom.xml文件中添加Nacos Config和Nacos Discovery的依賴。

<!--nacos配置管理依賴-->
<dependencies>  
    <!-- Nacos Config -->  
    <dependency>  
        <groupId>com.alibaba.cloud</groupId>  
        <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>  
        <version>2021.1</version>  
    </dependency>  
    <!-- Nacos Discovery -->  
    <dependency>  
        <groupId>com.alibaba.cloud</groupId>  
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>  
        <version>2021.1</version>  
    </dependency>  
</dependencies>
<!--spring cloud從2021.0.5版本起,Spring Cloud將不再默認啟用bootstrap,需要手動添加依賴。不引入bootstrap.properties/yml不生效-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>

新建bootstrap.yml文件

Spring引入了一種新的配置文件:bootstrap.yaml。它的讀取流程如下:啟動項目 --> 讀取bootstrap.yaml文件 --> 找到nacos中,對應(yīng)的配置文件 --> 讀取本地 application.yaml文件 ---> 創(chuàng)建容器 加載bean ...

因此,我們需要在bootstrap.yml文件中配置Nacos服務(wù)器地址和命名空間等信息,在spring中nacos配置中心的配置前綴是 spring.cloud.nacos.config。

spring:  
  application:  
    name: demo-app  
  cloud:  
    nacos:  
      discovery:  
        server-addr: localhost:8848 # Nacos服務(wù)地址  
        namespace: your-namespace-id # Nacos命名空間ID  
      config:  
        server-addr: localhost:8848 # Nacos作為配置中心地址  
        namespace: your-namespace-id # Nacos命名空間ID  
        group: your-group # 配置分組名稱  
        data-id: your-data-id # 配置ID,通常與spring.application.name相同  
        extension-configs:  
          - data-id: another-data-id # 另一個配置ID  
            group: ANOTHER_GROUP # 另一個配置分組名稱
            refresh: true  
        file-extension: yaml # 配置文件格式,默認為properties

或在bootstrap.properties文件中配置Nacos服務(wù)器地址和命名空間等信息

# bootstrap.properties  
spring.cloud.nacos.config.server-addr=127.0.0.1:8848  
spring.cloud.nacos.config.namespace=your-namespace  
spring.cloud.nacos.config.group=DEFAULT_GROUP  
spring.cloud.nacos.config.data-id=your-data-id  
spring.cloud.nacos.config.extension-configs[0].data-id=another-data-id  
spring.cloud.nacos.config.extension-configs[0].group=ANOTHER_GROUP  
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848

然后,新建兩個文件bootstrap-dev.yaml和bootstrap-prod.yaml,文件內(nèi)容如下,兩個文件內(nèi)容格式是一樣的。

spring:  
  cloud:  
    nacos:  
      discovery:  
        server-addr: localhost:8848 # Nacos服務(wù)地址  
        namespace: your-namespace-id # Nacos命名空間ID  
        group: your-group # 配置分組名稱  
      config:  
        server-addr: localhost:8848 # Nacos作為配置中心地址  
        namespace: your-namespace-id # Nacos命名空間ID  
        group: your-group # 配置分組名稱  

在Nacos的配置中,discovery和config是兩個核心組件,它們各自承擔(dān)著不同的職責(zé)。

(1)Discovery(服務(wù)發(fā)現(xiàn)):

Discovery的主要作用是實現(xiàn)服務(wù)的自動注冊與發(fā)現(xiàn)。當(dāng)服務(wù)提供者啟動后,它會自動將自己的服務(wù)信息注冊到Nacos中。而服務(wù)消費者則可以通過Nacos查詢和發(fā)現(xiàn)可用的服務(wù)提供者。這樣,服務(wù)消費者就能夠動態(tài)地獲取到服務(wù)提供者的網(wǎng)絡(luò)位置(如IP和端口),從而實現(xiàn)服務(wù)的調(diào)用。

服務(wù)發(fā)現(xiàn)在微服務(wù)架構(gòu)中非常重要,因為它允許服務(wù)之間動態(tài)地相互發(fā)現(xiàn)和通信,而無需硬編碼服務(wù)地址。這使得服務(wù)能夠更靈活地部署和擴展,同時也提高了系統(tǒng)的可用性和容錯性。

(2)Config(配置管理):

Config的主要作用是實現(xiàn)配置信息的集中管理和動態(tài)更新。在微服務(wù)架構(gòu)中,通常會有許多服務(wù)共享一些公共的配置信息,如數(shù)據(jù)庫連接信息、緩存配置等。Config允許將這些配置信息統(tǒng)一存儲在Nacos中,并通過配置中心進行管理和分發(fā)。當(dāng)配置信息發(fā)生變化時,Config能夠?qū)崟r地將最新的配置推送給服務(wù)消費者,從而實現(xiàn)配置的動態(tài)更新。

配置管理在微服務(wù)架構(gòu)中同樣非常重要,因為它允許開發(fā)人員在不重啟服務(wù)的情況下更新配置信息。這大大提高了系統(tǒng)的靈活性和可維護性,同時也降低了運維成本。

(3)區(qū)別:

  • 服務(wù)發(fā)現(xiàn)(Discovery) 專注于服務(wù)的注冊與發(fā)現(xiàn),解決的是服務(wù)之間的通信問題。它使得服務(wù)能夠動態(tài)地發(fā)現(xiàn)和調(diào)用其他服務(wù),而無需硬編碼服務(wù)地址。
  • 配置管理(Config) 專注于配置信息的集中管理和動態(tài)更新,解決的是配置信息的共享和更新問題。它允許開發(fā)人員在不重啟服務(wù)的情況下實時更新配置信息,從而提高了系統(tǒng)的靈活性和可維護性。

原yml文件改造

可以保留程序啟動端口。

server:
    port:1839

3.啟動類注解

在Spring Boot啟動類上添加 @EnableDiscoveryClient 和 @EnableConfigServer 注解,開啟服務(wù)發(fā)現(xiàn)和配置管理功能。

@SpringBootApplication
@EnableDiscoveryClient
@EnableConfigServer
public class YourApplication {
    public static void main(String[] args) {
        SpringApplication.run(YourApplication.class, args);
    }
}

4.使用配置

在Spring Boot應(yīng)用中,可以直接通過 @Value 或 @ConfigurationProperties 注解注入Nacos中的配置。@ConfigurationProperties和@Value注解用于獲取配置文件中的屬性定義并綁定到Java Bean或?qū)傩灾小?/p>

通過@Value(“${xxxx}”)可以獲取屬性文件中對應(yīng)的值,但是如果屬性文件中沒有這個屬性,則會報錯。可以通過賦予默認值解決這個問題,如@Value(“${xxxx:yyyy}”)。

@ConfigurationProperties注解對屬性綁定遵循relaxed bind rule【暫且翻譯為松散綁定規(guī)則】,并不需要精確匹配。所謂的寬松綁定原則是指:并不是 JavaBean 中的屬性必須要和配置文件中的一致才能綁定數(shù)據(jù),context-path 也能綁定到 contextPath 屬性上。比如對屬性【app.username】,通過【app.userName】、【app.user-name】、【app.user_name】、【app.USER_NAME】、【app.USER-NAME】等都可匹配,我們可理解為模糊匹配。

@RestController
public class ConfigController {
	@Value("${your.config.key}")
	private String configValue;
	
	@GetMapping("/config")
	public String getConfig() {
		return configValue;
	}
}
@Data  // 需要提供默認的構(gòu)造函數(shù),以及get/setter方法
@ConfigurationProperties("my.service")
public class MyProperties {
    // 我們可以簡單地用一個值初始化一個字段來定義一個默認值
    private boolean enabled = true;
 
    private InetAddress remoteAddress;
 
    private final Security security = new Security();
 
    @Data
    public static class Security {
        private String username;
 
        private String password;
        // 如果這個屬性配置的話,默認是“USER”
        private List<String> roles = new ArrayList<>(Collections.singleton("USER"));
 
    }
}

在配置文件中進行如下配置,

my:
  service:
    enabled: true
    remoteAddress: 127.0.0.1
    security:
     username: csx
     password: passwoed
     roles:
       - role1
       - role2
your:
    config:
        key:ccvvv

5.測試

最后,可以嘗試啟動項目程序,看看是否能啟動成功。如果啟動成功則說明成功了。

通過整合Nacos,Spring Boot項目能夠輕松實現(xiàn)配置的動態(tài)管理和服務(wù)的自動發(fā)現(xiàn)。Nacos的簡單易用和強大的功能使其成為微服務(wù)架構(gòu)中不可或缺的一部分。通過本文的介紹和示例代碼,讀者應(yīng)該能夠掌握Spring Boot與Nacos的集成方法,并在實際項目中高效利用Nacos進行服務(wù)配置管理。

以上就是SpringBoot使用Nacos進行application.yml配置管理的詳細內(nèi)容,更多關(guān)于SpringBoot application.yml配置管理的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Java常用開源庫匯總

    Java常用開源庫匯總

    這篇文章主要介紹了Java常用開源庫的相關(guān)資料,文中講解非常細致,幫助大家更好的理解和學(xué)習(xí)Java,感興趣的朋友可以了解下
    2020-07-07
  • mybatis動態(tài)拼接實現(xiàn)有條件的插入

    mybatis動態(tài)拼接實現(xiàn)有條件的插入

    這篇文章主要介紹了mybatis動態(tài)拼接實現(xiàn)有條件的插入,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • 關(guān)于springboot響應(yīng)式編程整合webFlux的問題

    關(guān)于springboot響應(yīng)式編程整合webFlux的問題

    在springboot2.x版本中提供了webFlux依賴模塊,該模塊有兩種模型實現(xiàn):一種是基于功能性端點的方式,另一種是基于SpringMVC注解方式,今天通過本文給大家介紹springboot響應(yīng)式編程整合webFlux的問題,感興趣的朋友一起看看吧
    2022-01-01
  • Java編程redisson實現(xiàn)分布式鎖代碼示例

    Java編程redisson實現(xiàn)分布式鎖代碼示例

    這篇文章主要介紹了Java編程redisson實現(xiàn)分布式鎖代碼示例,小編覺得還是比較不錯的,這里給大家分享下,供需要的朋友參考。
    2017-10-10
  • Mybatis?Mapper中多參數(shù)方法不使用@param注解報錯的解決

    Mybatis?Mapper中多參數(shù)方法不使用@param注解報錯的解決

    這篇文章主要介紹了Mybatis?Mapper中多參數(shù)方法不使用@param注解報錯的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教。
    2022-01-01
  • java如何將實體類轉(zhuǎn)換成json并在控制臺輸出

    java如何將實體類轉(zhuǎn)換成json并在控制臺輸出

    這篇文章主要介紹了java如何將實體類轉(zhuǎn)換成json并在控制臺輸出問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • Java中SpringCloud的五大組件詳解

    Java中SpringCloud的五大組件詳解

    這篇文章主要介紹了Java中SpringCloud的五大組件詳解,Spring cloud是一個基于Spring Boot實現(xiàn)的服務(wù)治理工具包,在微服務(wù)架構(gòu)中用于管理和協(xié)調(diào)服務(wù),需要的朋友可以參考下
    2023-07-07
  • Java Spring Security認證與授權(quán)及注銷和權(quán)限控制篇綜合解析

    Java Spring Security認證與授權(quán)及注銷和權(quán)限控制篇綜合解析

    Spring Security 是 Spring 家族中的一個安全管理框架,實際上,在 Spring Boot 出現(xiàn)之前,Spring Security 就已經(jīng)發(fā)展了多年了,但是使用的并不多,安全管理這個領(lǐng)域,一直是 Shiro 的天下
    2021-10-10
  • 使用maven項目pom.xml文件配置打包功能和靜態(tài)資源文件自帶版本號功能

    使用maven項目pom.xml文件配置打包功能和靜態(tài)資源文件自帶版本號功能

    在Maven項目中,通過pom.xml文件配置打包功能,可以控制構(gòu)建過程,生成可部署的包,同時,為了緩存控制與版本更新,可以在打包時給靜態(tài)資源文件如JS、CSS添加版本號,這通常通過插件如maven-resources-plugin實現(xiàn)
    2024-09-09
  • SpringBoot如何加載多個YAML配置文件

    SpringBoot如何加載多個YAML配置文件

    在Spring?Boot中加載多個?YAML?配置文件是一個常見的需求,通常用于將配置信息分離到多個文件中以便于管理和維護,下面就跟隨小編一起來看看具體實現(xiàn)吧
    2025-02-02

最新評論

沛县| 兴文县| 天全县| 沂源县| 双城市| 景德镇市| 漳平市| 西丰县| 永福县| 黑水县| 宝兴县| 玉溪市| 安龙县| 绥中县| 宜兰市| 锦屏县| 新竹市| 黎城县| 开鲁县| 浦县| 新民市| 古交市| 咸阳市| 威海市| 左权县| 阳谷县| 阿拉善左旗| 柳林县| 永泰县| 阳江市| 大石桥市| 花莲县| 随州市| 淳安县| 双牌县| 皮山县| 灌云县| 永康市| 钟祥市| 鸡西市| 山东省|