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

springboot整合nacos,如何讀取nacos配置文件

 更新時(shí)間:2022年11月23日 09:14:37   作者:L小象  
這篇文章主要介紹了springboot整合nacos,如何讀取nacos配置文件問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

springboot整合nacos

1、引入依賴

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

2、啟用類上使用配置

@NacosPropertySource(dataId="xxx",groupId="xxx",autoRefreshed=true,type=ConfigType.xxxx)

其中dataId和Group就是配置頁的內(nèi)容。

  • autoRefreshed 是否實(shí)時(shí)更新,true:是;false:否
  • type:可以指定nacos配置文件的類型,與下保持一致。

3、配置文件中配置nacos信息

創(chuàng)建application.properties,并寫入nacos配置信息:

  nacos.config.server-addr=127.0.0.1:8848
  nacos.config.namespace=namespace
  nacos.config.username=username
  nacos.config.password=password

啟動(dòng)服務(wù)即可。

補(bǔ)充1:nacos其實(shí)只提供了json、properties、yaml、xml四種默認(rèn)配置,如果你用的是其他文件類型就需要自己定義。我這里用的文件類型是media,所以需要自定義一下,如圖所示:

報(bào)錯(cuò):

解決辦法:

1、在本服務(wù)的resource下新建 META-INF/services 文件夾

2、新建文件 com.alibaba.nacos.spring.util.ConfigParse 文件,內(nèi)容寫自定義的配置文件地址,如果所示:

3、自定義返回配置文件類型 

/**
 * @Author: liuxiaoxiang
 * @Date: 2021/1/26 22:52
 */
 
import com.alibaba.nacos.spring.util.parse.DefaultPropertiesConfigParse;
 
/**
 * @author :liuxiaoxiang
 * @Date: :2021/1/26 22:52
 * @description:
 */
public class DefaultMediaConfigParse extends DefaultPropertiesConfigParse {
 
    @Override
    public String processType() {
        return "media";
    }
}

補(bǔ)充2:上述獲取nacos的相關(guān)信息是通過配置文件配置的,如果想從環(huán)境變量獲取nacos配置,在可以項(xiàng)目啟動(dòng)時(shí)將nacos配置信息放到環(huán)境變量中,因?yàn)閚acos內(nèi)部代碼是先從環(huán)境變量中加載nacos配置信息:

@ComponentScan(basePackages = {"com.xiang"})
@SpringBootApplication
@CrossOrigin
@NacosPropertySource(dataId = "xxx", groupId = "xxx", autoRefreshed = true, type = ConfigType.TEXT)
public class NacosApplication {
 
 
    public static void main(String[] args) {
        SpringApplication.run(NacosApplication.class, args);
        System.out.println("啟動(dòng)成功");
    }
 
    static {
        List<String> list = Arrays.asList(String.valueOf(System.getenv().get("HITENACOS")).split(":"));
        System.setProperty("nacos.config.server-addr", "127.0.0.1:8848");
        System.setProperty("nacos.config.namespace", "namespace");
        System.setProperty("nacos.config.username", "username");
        System.setProperty("nacos.config.password", "password");
    }
}

或者,放到配置信息 Properties中,nacos會(huì)在加載了sercer-addr 等配置信息后,跟@NacosPropertySource 中的信息進(jìn)行合并,也可以在此時(shí)讀取配置信息,具體寫法如下:

 
    /**
     * 方式二:將nacos信息保存到properties,nacos會(huì)將@NacosPropertySource和配置文件中的信息合并生成nacos配置
     */
    @Bean
    static Properties globalNacosProperties() {
        //創(chuàng)建spplication文件并保存信息
        Map<String, String> map = NacosInfo.getNacosConfigBySystem();
        Properties properties = new Properties();
        properties.setProperty(NacosConstants.SERVERADDR_KEY, NacosConstants.SERVERADDR_VALUE);
        properties.setProperty(NacosConstants.NAMESPACE_KAY, map.get(NacosConstants.NAMESPACE_KAY));
        properties.setProperty(NacosConstants.USERNAME_KEY, map.get(NacosConstants.USERNAME_KEY));
        properties.setProperty(NacosConstants.PASSWORD_KEY, map.get(NacosConstants.PASSWORD_KEY));
        log.info("獲取到的內(nèi)存中的信息為:" + map.toString());
        return properties;
    }

從環(huán)境變量中獲取nacos配置信息:

package com.honghe.common.util.nacos;
 
import com.honghe.common.util.constants.NacosConstants;
import lombok.extern.slf4j.Slf4j;
 
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
 
/**
 * @Description
 * @Author liuxiaoxiang
 * @Date: 2021-01-28 18:48
 * @Mender:
 */
@Slf4j
public class NacosInfo {
 
    /**
     * 從系統(tǒng)中獲取nacos配置信息
     *
     * @return
     */
    public static Map<String, String> getNacosConfigBySystem() {
        String nacosInfos = null;
        Map<String, String> map = System.getenv();
        if (map.size() > 0 && map.containsKey(NacosConstants.HITENACOS)) {
            nacosInfos = map.get(NacosConstants.HITENACOS);
            log.info("通過env獲取");
        } else {
            nacosInfos = System.getProperties().getProperty(NacosConstants.HITENACOS);
            log.info("通過系統(tǒng)變量獲取");
        }
        //解析value
        Map<String, String> nacosInfoMap = new HashMap();
        if (null != nacosInfos && nacosInfos.contains(NacosConstants.split_)) {
            List<String> list = Arrays.asList(nacosInfos.split(NacosConstants.split_));
            if (list.size() >= 3) {
                log.info("從環(huán)境變量中獲取hitenacos信息成功:" + list);
                nacosInfoMap.put(NacosConstants.NAMESPACE_KAY, list.get(0));
                nacosInfoMap.put(NacosConstants.USERNAME_KEY, list.get(1));
                nacosInfoMap.put(NacosConstants.PASSWORD_KEY, list.get(2));
            } else {
                log.info("從環(huán)境變量中獲取hitenacos信息,value值小于3個(gè)");
            }
        } else {
            log.info("從環(huán)境變量中獲取hitenacos信息失敗");
        }
        return nacosInfoMap;
    }
}

nacos常量類:

/**
 * @Description
 * @Author liuxiaoxiang
 * @Date: 2021-03-16
 * @Mender:
 */
public class NacosConstants {
 
    public static final String HITENACOS = "HITENACOS";
    //讀取的文件名
    public static final String FILE_NAME = "application";
 
    //nacos配置信息
    public static final String SERVERADDR_KEY = "serverAddr";
    public static final String SERVERADDR_VALUE = "localhost:8848";
    public static final String NAMESPACE_KAY = "namespace";
    public static final String USERNAME_KEY = "username";
    public static final String PASSWORD_KEY = "password";
 
    public static final String NACOS_SERVERADDR_KEY = "nacos.config.server-addr";
    public static final String NACOS_NAMESPACE_KAY = "nacos.config.namespace";
    public static final String NACOS_USERNAME_KEY = "nacos.config.username";
    public static final String NACOS_PASSWORD_KEY = "nacos.config.password";
 
    public static final String split_ = ":";
}

springboot集成nacos,本地運(yùn)行正常,打包報(bào)錯(cuò)

問題

springboot集成nacos后,本地運(yùn)行沒有任何問題,但是打包就報(bào)錯(cuò)——讀取。

Injection of autowired dependencies failed; nested exception is java.lang.IllegalArgumentException:

解決方案

把nacos配置中的中文注釋去掉,再打包就沒有問題了。

PS:排查過程有些繁瑣,能查到的方案都嘗試過,但都無效,最終我的解決方案也是很簡單的。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • java開發(fā)MVC三層架構(gòu)上再加一層Manager層原理詳解

    java開發(fā)MVC三層架構(gòu)上再加一層Manager層原理詳解

    這篇文章主要為大家介紹了MVC三層架構(gòu)中再加一層Manager層原理的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2021-10-10
  • 使用@PropertySource讀取配置文件通過@Value進(jìn)行參數(shù)注入

    使用@PropertySource讀取配置文件通過@Value進(jìn)行參數(shù)注入

    這篇文章主要介紹了使用@PropertySource讀取配置文件通過@Value進(jìn)行參數(shù)注入,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • ruoyi微服務(wù)版本搭建運(yùn)行方式

    ruoyi微服務(wù)版本搭建運(yùn)行方式

    這篇文章主要介紹了ruoyi微服務(wù)版本搭建運(yùn)行方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • 一文帶你你搞懂Java的3種IO模型

    一文帶你你搞懂Java的3種IO模型

    在Java中,一共有三種IO模型,分別是阻塞IO(BIO)、非阻塞IO(NIO)和異步IO(AIO),本文將給大家詳解的介紹這三種IO模型,文中有相關(guān)的代碼示例,需要的朋友可以參考下
    2023-05-05
  • springboot跨域過濾器fetch react Response to preflight request doesn‘t pass access control check問題

    springboot跨域過濾器fetch react Response to p

    這篇文章主要介紹了springboot跨域過濾器fetch react Response to preflight request doesn‘t pass access control check問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • mybatis?plus?MetaObjectHandler?不生效的解決

    mybatis?plus?MetaObjectHandler?不生效的解決

    今天使用mybatis-plus自動(dòng)為更新和插入操作插入更新時(shí)間和插入時(shí)間,配置了MetaObjectHandler不生效,本文就來解決一下,具有一定的 參考價(jià)值,感興趣的可以了解一下
    2023-10-10
  • Java用BigDecimal解決double類型相減時(shí)可能存在的誤差

    Java用BigDecimal解決double類型相減時(shí)可能存在的誤差

    這篇文章主要介紹了Java用BigDecimal解決double類型相減時(shí)可能存在的誤差,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • Java?多線程并發(fā)編程提高數(shù)據(jù)處理效率的詳細(xì)過程

    Java?多線程并發(fā)編程提高數(shù)據(jù)處理效率的詳細(xì)過程

    這篇文章主要介紹了Java?多線程并發(fā)編程提高數(shù)據(jù)處理效率,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-04-04
  • 阿里云發(fā)布 Spring Boot 新腳手架工程

    阿里云發(fā)布 Spring Boot 新腳手架工程

    這篇文章主要介紹了阿里云發(fā)布 Spring Boot 新腳手架的相關(guān)資料,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,可以參考下
    2020-04-04
  • 使用SpringCloudAlibaba整合Dubbo

    使用SpringCloudAlibaba整合Dubbo

    這篇文章主要介紹了使用SpringCloudAlibaba整合Dubbo,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-10-10

最新評(píng)論

郑州市| 怀集县| 香河县| 天津市| 武宁县| 邹平县| 沈丘县| 东明县| 昭通市| 马山县| 读书| 新化县| 寿阳县| 河池市| 临汾市| 阆中市| 岳普湖县| 水城县| 房产| 台东市| 太湖县| 安吉县| 卫辉市| 高唐县| 德钦县| 青龙| 班戈县| 连平县| 龙陵县| 平顺县| 望奎县| 邳州市| 盖州市| 常宁市| 香港 | 长春市| 象州县| 大同县| 廉江市| 民县| 什邡市|