真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

NacosConfig中怎么集成SpringCloud

本篇文章給大家分享的是有關(guān)Nacos Config中怎么集成SpringCloud,小編覺得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

10年的殷都網(wǎng)站建設(shè)經(jīng)驗(yàn),針對設(shè)計(jì)、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。成都全網(wǎng)營銷的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整殷都建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)從事“殷都網(wǎng)站設(shè)計(jì)”,“殷都網(wǎng)站推廣”以來,每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。

  • 系統(tǒng)集成的方式

  1. maven包依賴

	
			org.springframework.cloud
			spring-cloud-starter-alibaba-nacos-config
			0.2.1.RELEASE
	

    2.bootstrap.properties配置文件

#nacos配置中心地址
spring.cloud.nacos.config.server-addr=10.136.15.122:8848
#默認(rèn)應(yīng)用名稱,配置中心中data-id 默認(rèn)為name+file-extension
spring.application.name=example
沒有配置情況下用name作為前綴
#spring.cloud.nacos.config.prefix
#應(yīng)用文件格式支持properties,yml兩種
spring.cloud.nacos.config.file-extension=properties

3.java應(yīng)用代碼

package com.nacos;


import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/config")
@RefreshScope
public class ConfigController {

    @Value("${useLocalCache:false}")
    private boolean useLocalCache;
    
    /**
     * http://localhost:8080/config/get
     */
    @RequestMapping("/get")
    public boolean get() {
        return useLocalCache;
    }
}
package com.nacos;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;


@SpringBootApplication
public class NacosConfigApplication {

    public static void main(String[] args) {
        SpringApplication.run(NacosConfigApplication.class, args);
    }
}

4.啟動(dòng)應(yīng)用,nacos配置中心配置參數(shù),訪問/config/get 結(jié)果為true ,結(jié)果配置成功

Nacos Config中怎么集成SpringCloud

  • 參數(shù)配置說明 

#配置中心地址
spring.cloud.nacos.config.server-addr=10.136.15.122:8848

#應(yīng)用名稱,非必須,如果沒有配置prefix,默認(rèn)以name為前綴
#spring.application.name=example
#data-id前綴
spring.cloud.nacos.config.prefix=example
#文件類型,支持properties和yml兩種數(shù)據(jù)格式
spring.cloud.nacos.config.file-extension=properties
#環(huán)境,可以隔離不同配置環(huán)境之間的配置,如dev,uat,pro
spring.profiles.active=dev
#命名空間 也是起隔離作用的,隔離不同應(yīng)用這之間的作用
spring.cloud.nacos.config.namespace=c04b0cdf-91c7-470a-b6a9-423da6cc7a2b

#分組起隔離同一命名空間下,不同的分組
spring.cloud.nacos.config.group=test

#加載額外配置,除加載上面主配置文件外,額外加載的公有配置功能
spring.cloud.nacos.config.ext-config[0].data-id=test.properties
spring.cloud.nacos.config.ext-config[0].refresh=true
  • 部分源碼解析

     NacosPropertySourceLocator類是Nacos Config的核心執(zhí)行類,實(shí)現(xiàn)了PropertySourceLocator接口,在SpringCloud項(xiàng)目啟動(dòng)中就會(huì)加載執(zhí)行的類,具體如下

   PropertySourceBootstrapConfiguration 是SpringCloud下的配置類實(shí)現(xiàn)了ApplicationContextInitializer接口,執(zhí)行init方法,具本原因可以查詢ApplicationContextInitializer相關(guān)接口的文檔說明,代碼如下

public void initialize(ConfigurableApplicationContext applicationContext) {
		CompositePropertySource composite = new CompositePropertySource(
				BOOTSTRAP_PROPERTY_SOURCE_NAME);
		AnnotationAwareOrderComparator.sort(this.propertySourceLocators);
		boolean empty = true;
		ConfigurableEnvironment environment = applicationContext.getEnvironment();
		for (PropertySourceLocator locator : this.propertySourceLocators) {
			PropertySource source = null;
			source = locator.locate(environment);
			if (source == null) {
				continue;
			}
			logger.info("Located property source: " + source);
			composite.addPropertySource(source);
			empty = false;
		}
		if (!empty) {
			MutablePropertySources propertySources = environment.getPropertySources();
			String logConfig = environment.resolvePlaceholders("${logging.config:}");
			LogFile logFile = LogFile.get(environment);
			if (propertySources.contains(BOOTSTRAP_PROPERTY_SOURCE_NAME)) {
				propertySources.remove(BOOTSTRAP_PROPERTY_SOURCE_NAME);
			}
			insertPropertySources(propertySources, composite);
			reinitializeLoggingSystem(environment, logConfig, logFile);
			setLogLevels(applicationContext, environment);
			handleIncludedProfiles(environment);
		}
}

發(fā)現(xiàn)最終執(zhí)行的locate方法,我們查看下NacosPropertySourceLocator的locate的實(shí)現(xiàn)如下

public PropertySource locate(Environment env) {

		ConfigService configService = nacosConfigProperties.configServiceInstance();

		if (null == configService) {
			LOGGER.warn(
					"no instance of config service found, can't load config from nacos");
			return null;
		}
		long timeout = nacosConfigProperties.getTimeout();
		nacosPropertySourceBuilder = new NacosPropertySourceBuilder(configService,
				timeout);
		String name = nacosConfigProperties.getName();
       /*配置的分組*/
		String nacosGroup = nacosConfigProperties.getGroup();
        /*配置的前綴*/
		String dataIdPrefix = nacosConfigProperties.getPrefix();
		if (StringUtils.isEmpty(dataIdPrefix)) {
			dataIdPrefix = name;
		}

        /*前綴沒有,則取spring.application.name*/
		if (StringUtils.isEmpty(dataIdPrefix)) {
			dataIdPrefix = env.getProperty("spring.application.name");
		}

		List profiles = Arrays.asList(env.getActiveProfiles());
		nacosConfigProperties.setActiveProfiles(profiles.toArray(new String[0]));

		String fileExtension = nacosConfigProperties.getFileExtension();

		CompositePropertySource composite = new CompositePropertySource(
				NACOS_PROPERTY_SOURCE_NAME);
        
		loadSharedConfiguration(composite);
		loadExtConfiguration(composite);
		/*加載配置方法*/
        loadApplicationConfiguration(composite, nacosGroup, dataIdPrefix, fileExtension);

		return composite;
}

通過這個(gè)方法,大概能明白我們上面的一些配置的作用,下面再看下loadApplicationConfiguration 加載配置的方法,loadSharedConfiguration,loadExtConfiguration是加載擴(kuò)展配置的方式,這里就詳細(xì)說明了

private void loadApplicationConfiguration(
			CompositePropertySource compositePropertySource, String nacosGroup,
			String dataIdPrefix, String fileExtension) {
		loadNacosDataIfPresent(compositePropertySource,
				dataIdPrefix + DOT + fileExtension, nacosGroup, fileExtension, true);
		for (String profile : nacosConfigProperties.getActiveProfiles()) {
			String dataId = dataIdPrefix + SEP1 + profile + DOT + fileExtension;
			loadNacosDataIfPresent(compositePropertySource, dataId, nacosGroup,
					fileExtension, true);
		}
}

這里可以看到,會(huì)優(yōu)先加載dateIdPrefix+DOT+fileExtension的配置,而后在加載環(huán)境的配置從而覆蓋之前的配置,這就是上面配置dev的作用

	private void loadNacosDataIfPresent(final CompositePropertySource composite,
			final String dataId, final String group, String fileExtension,
			boolean isRefreshable) {
		if (NacosContextRefresher.loadCount.get() != 0) {
			NacosPropertySource ps;
			if (!isRefreshable) {
				ps = NacosPropertySourceRepository.getNacosPropertySource(dataId);
			}
			else {
				ps = nacosPropertySourceBuilder.build(dataId, group, fileExtension, true);
			}

			composite.addFirstPropertySource(ps);
		}
		else {
			NacosPropertySource ps = nacosPropertySourceBuilder.build(dataId, group,
					fileExtension, isRefreshable);
			composite.addFirstPropertySource(ps);
		}
	}

以上就是Nacos Config中怎么集成SpringCloud,小編相信有部分知識點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見到或用到的。希望你能通過這篇文章學(xué)到更多知識。更多詳情敬請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


網(wǎng)站標(biāo)題:NacosConfig中怎么集成SpringCloud
URL標(biāo)題:http://weahome.cn/article/jegedg.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部