中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當前位置: 首頁 > news >正文

做五金生意什么網(wǎng)站做比較好精準營銷的三要素

做五金生意什么網(wǎng)站做比較好,精準營銷的三要素,如何在局域網(wǎng)中做網(wǎng)站,杭州久邦電力建設有限公司網(wǎng)站場景: 因項目需要,一個springcloud微服務工程需要同時部署到A,B兩個項目使用,但A項目使用Eureka注冊中心,B項目使用Nacos注冊中心,現(xiàn)在需要通過部署時修改配置來實現(xiàn)多注冊中心的切換。 解決思路: 如果同時…

場景:
因項目需要,一個springcloud微服務工程需要同時部署到A,B兩個項目使用,但A項目使用Eureka注冊中心,B項目使用Nacos注冊中心,現(xiàn)在需要通過部署時修改配置來實現(xiàn)多注冊中心的切換。
解決思路:
如果同時引入nacos和eureka的依賴和配置,不做任何處理,會導致啟動失敗:

***************************
APPLICATION FAILED TO START
***************************Description:Field registration in org.springframework.cloud.client.serviceregistry.ServiceRegistryAutoConfiguration$ServiceRegistryEndpointConfiguration required a single bean, but 2 were found:- nacosRegistration: defined by method 'nacosRegistration' in class path resource [com/alibaba/cloud/nacos/registry/NacosServiceRegistryAutoConfiguration.class]- eurekaRegistration: defined in BeanDefinition defined in class path resource [org/springframework/cloud/netflix/eureka/EurekaClientAutoConfiguration$RefreshableEurekaClientConfiguration.class]Action:Consider marking one of the beans as @Primary, updating the consumer to accept multiple beans, or using @Qualifier to identify the bean that should be consumed

不難看出失敗原因是單例bean找到了兩個實例,那么該如何解決這個問題呢?首先想到的肯定是刪除掉暫時不需要使用的實例(如使用eureka注冊中心則刪掉引入pom的nacos依賴),這樣做是沒有問題的,但是維護成本比較高。能不能從springboot自動裝配原理入手,找到更便捷的方法呢?接著看:
我們都知道SpringBoot的啟動類的@SpringBootApplication是一個組合注解,它里面的@EnableAutoConfiguration會引入AutoConfigurationImportSelector.class
在這里插入圖片描述
在這里插入圖片描述
從這個類的方法getAutoConfigurationEntry()一層一層點進去看,

SpringFactoriesLoader.loadFactories()會去檢索META-INF/spring.factories文件。

protected List<AutoConfigurationImportFilter> getAutoConfigurationImportFilters() {return SpringFactoriesLoader.loadFactories(AutoConfigurationImportFilter.class, this.beanClassLoader);}

那么思路就比較清晰了,我們可以通過實現(xiàn)AutoConfigurationImportFilter接口,將自己的過濾邏輯寫在實現(xiàn)類中,就可以實現(xiàn)自定義的自動裝配過濾器了。
上代碼:
通過把1、2、3的代碼放到一個starter中,然后在具體的項目中引用這個starter,配置文件中添加4的配置就可以切換了,當然具體nacos和eureka在yml中的配置還是分開寫,只需指定用那個配置就行
1.過濾器

package com.demo.business;import com.demo.business.constants.RegistrationCenterConstants;
import org.apache.commons.lang3.StringUtils;
import org.springframework.boot.autoconfigure.AutoConfigurationImportFilter;
import org.springframework.boot.autoconfigure.AutoConfigurationMetadata;
import org.springframework.context.EnvironmentAware;
import org.springframework.core.env.Environment;public class EngineAutoConfigurationImportFilter implements AutoConfigurationImportFilter, EnvironmentAware {private Environment environment;@Overridepublic boolean[] match(String[] autoConfigurationClasses, AutoConfigurationMetadata autoConfigurationMetadata) {//獲取配置的注冊中心,默認為nacosString registryType = environment.getProperty("registry.type", RegistrationCenterConstants.NACOS);boolean[] match = new boolean[autoConfigurationClasses.length];//當自定義標識為eureka,則排除nacos的自動裝配,反之同理;if (registryType.equals(RegistrationCenterConstants.EUREKA)) {for (int i = 0; i < autoConfigurationClasses.length; i++) {match[i] = !StringUtils.isNotBlank(autoConfigurationClasses[i]) ||!autoConfigurationClasses[i].equals(RegistrationCenterConstants.NACOS_SERVICE_REGISTRY_AUTO_CONFIGURATION);}} else {for (int i = 0; i < autoConfigurationClasses.length; i++) {if (StringUtils.isNotBlank(autoConfigurationClasses[i])){match[i] = !RegistrationCenterConstants.EUREKA_DISCOVERY_CLIENT_CONFIGURATION.equals(autoConfigurationClasses[i])&& !RegistrationCenterConstants.EUREKA_AUTO_CONFIGURATION_CLASSES.equals(autoConfigurationClasses[i]);}}}return match;}@Overridepublic void setEnvironment(Environment environment) {this.environment = environment;}
}或者以下這樣也可以
import org.apache.commons.lang3.StringUtils;
import org.springframework.boot.autoconfigure.AutoConfigurationImportFilter;
import org.springframework.boot.autoconfigure.AutoConfigurationMetadata;
import org.springframework.context.EnvironmentAware;
import org.springframework.core.env.Environment;public class EngineAutoConfigurationImportFilter implements AutoConfigurationImportFilter, EnvironmentAware {private Environment environment;public EngineAutoConfigurationImportFilter() {}public boolean[] match(String[] autoConfigurationClasses, AutoConfigurationMetadata autoConfigurationMetadata) {String registryType = this.environment.getProperty("registry.type", "eureka");boolean[] match = new boolean[autoConfigurationClasses.length];//提取成常量String prefix = registryType.equals("nacos") ? "org.springframework.cloud.netflix.eureka" : "com.alibaba.cloud.nacos";for(int i = 0; i < autoConfigurationClasses.length; ++i) {if (StringUtils.isNotBlank(autoConfigurationClasses[i])) {match[i] = !autoConfigurationClasses[i].startsWith(prefix);}}return match;}public void setEnvironment(Environment environment) {this.environment = environment;}
}

2.常量類

package com.demo.business.constants;/*** 注冊中心相關常量類*/
public class RegistrationCenterConstants {public static final String NACOS = "nacos";public static final String EUREKA = "eureka";public static final String EUREKA_AUTO_CONFIGURATION_CLASSES = "org.springframework.cloud.netflix.eureka.EurekaClientAutoConfiguration";public static final String EUREKA_DISCOVERY_CLIENT_CONFIGURATION = "org.springframework.cloud.netflix.eureka.EurekaDiscoveryClientConfiguration";public static final String NACOS_SERVICE_REGISTRY_AUTO_CONFIGURATION = "com.alibaba.cloud.nacos.registry.NacosServiceRegistryAutoConfiguration";或者
public static final String NACOS_PREFIX = "com.alibaba.cloud.nacos";public static final String EUREKA_PREFIX = "org.springframework.cloud.netflix.eureka";}

3.spring.factories文件(注意路徑一定要在META-INF包下)

org.springframework.boot.autoconfigure.AutoConfigurationImportFilter=\com.example.demo.business.EngineAutoConfigurationImportFilter

4.配置文件添加

registry:type: nacos

效果
通過修改配置項registry.type就可以實現(xiàn)eureka和nacos的切換了

http://www.risenshineclean.com/news/64098.html

相關文章:

  • 網(wǎng)站首頁的模塊布局杭州百度快速排名提升
  • 做競猜網(wǎng)站合法嗎如何快速提升網(wǎng)站關鍵詞排名
  • 哪個平臺查企業(yè)免費谷歌aso優(yōu)化
  • 專業(yè)做網(wǎng)站公司哪家好一句簡短走心文案
  • 個人做理財網(wǎng)站好上海seo關鍵詞優(yōu)化
  • ppt中仿網(wǎng)站鏈接怎么做b站引流推廣網(wǎng)站
  • 做網(wǎng)站的步驟流程seo外包杭州
  • 網(wǎng)站建設全套流程廣州seo全網(wǎng)營銷
  • 網(wǎng)站建設中的咨詢服務北京網(wǎng)絡推廣
  • 網(wǎng)站建設色系搭配種子資源
  • 長沙畢業(yè)設計代做網(wǎng)站價格網(wǎng)域名查詢地址
  • 如何做微商城網(wǎng)站建設國內推廣平臺
  • 網(wǎng)站開發(fā)主流技術線路介紹網(wǎng)站制作論文
  • 專業(yè)設計企業(yè)網(wǎng)站中國體育新聞
  • 一個公司做兩個網(wǎng)站的好處我想接app純注冊推廣單
  • 網(wǎng)站前臺建設用到哪些工具百度app手機版
  • 政府網(wǎng)站建設要求有哪些口紅的推廣軟文
  • 地產(chǎn)公司做網(wǎng)站維護寫代碼么6廣州seo公司官網(wǎng)
  • 用DW做的網(wǎng)站怎么分享給別人怎樣做線上銷售
  • 網(wǎng)站建設服務宗旨代寫文章質量高的平臺
  • 怎么做淘寶客網(wǎng)站備案win10系統(tǒng)優(yōu)化工具
  • 讓別人做網(wǎng)站是要每年續(xù)費嗎網(wǎng)絡營銷課程總結與心得體會
  • 大連企業(yè)建站系統(tǒng)模板電腦優(yōu)化大師官方免費下載
  • 來個網(wǎng)站吧好人一生平安2021足球積分排行榜最新
  • 張家界網(wǎng)站定制外貿網(wǎng)站有哪些
  • 網(wǎng)站怎么設計好看的圖片怎樣和政府交換友鏈
  • 用dw做網(wǎng)站 的過程湖南好搜公司seo
  • 2019網(wǎng)頁游戲排行榜百度seo關鍵詞
  • 上門做網(wǎng)站公司哪家好2021年網(wǎng)絡營銷考試題及答案
  • wordpress上傳文章seo狂人