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

SpringCloud FeignClient中Bean重復(fù)注冊(cè)沖突解決方案

 更新時(shí)間:2026年03月13日 08:33:30   作者:z_鑫  
本文詳細(xì)解析了SpringCloud開(kāi)發(fā)中FeignClientBean重復(fù)定義問(wèn)題,從微服務(wù)啟動(dòng)的基礎(chǔ)配置講起,分析了報(bào)錯(cuò)根源,并對(duì)比了兩種主流解決方案的優(yōu)劣,同時(shí)覆蓋了有狀態(tài)/無(wú)狀態(tài)Bean的核心知識(shí)點(diǎn),需要的朋友可以參考下

大家好,今天給大家?guī)?lái)一篇SpringCloud開(kāi)發(fā)中90%開(kāi)發(fā)者都會(huì)踩的核心坑點(diǎn)實(shí)戰(zhàn)解析——FeignClient Bean對(duì)象重復(fù)定義問(wèn)題。

本文會(huì)從微服務(wù)啟動(dòng)的基礎(chǔ)配置講起,完整還原報(bào)錯(cuò)現(xiàn)場(chǎng),深度拆解報(bào)錯(cuò)根源,對(duì)比兩種主流解決方案的優(yōu)劣,再結(jié)合有狀態(tài)/無(wú)狀態(tài)Bean的核心知識(shí)點(diǎn),同時(shí)覆蓋面試高頻考點(diǎn),新手也能一次性吃透!

一、微服務(wù)啟動(dòng)前置:SpringCloud配置文件全解析

在解決FeignClient沖突問(wèn)題之前,我們先把微服務(wù)啟動(dòng)的基礎(chǔ)配置邏輯理清楚,這是后續(xù)所有問(wèn)題分析的基礎(chǔ)。很多新手啟動(dòng)服務(wù)失敗,第一步就栽在了配置文件的理解上。

1. bootstrap與application配置文件的核心區(qū)別

SpringBoot/SpringCloud項(xiàng)目中,我們常用的配置文件分為兩大維度,很多人一直搞不清它們的加載順序和使用場(chǎng)景,這里一次性講透:

配置文件前綴所屬框架核心作用加載優(yōu)先級(jí)
bootstrapSpringCloud微服務(wù)啟動(dòng)前置配置,主要存放注冊(cè)中心地址、配置中心地址、微服務(wù)名稱(chēng)最高(先加載)
applicationSpringBoot應(yīng)用級(jí)配置,存放數(shù)據(jù)庫(kù)、Redis、MQ、端口等業(yè)務(wù)組件配置低于bootstrap

而每個(gè)前綴的配置文件,又支持properties/yml/yaml三種格式,同前綴下,properties格式優(yōu)先級(jí)高于yml/yaml。

劃重點(diǎn):

  • 只有引入了SpringCloud相關(guān)組件,bootstrap配置文件才會(huì)生效;純SpringBoot項(xiàng)目無(wú)法識(shí)別該文件
  • 微服務(wù)必須先加載bootstrap配置,完成服務(wù)注冊(cè)到注冊(cè)中心,后續(xù)application里的業(yè)務(wù)組件才能正常使用,這是核心加載邏輯

2. Nacos注冊(cè)中心+配置中心一體化配置

我們微服務(wù)最常用的Nacos組件,它同時(shí)承擔(dān)了注冊(cè)中心和配置中心的能力,這里給大家標(biāo)準(zhǔn)的可直接復(fù)制的配置寫(xiě)法。

bootstrap.properties中,無(wú)需分開(kāi)寫(xiě)注冊(cè)中心和配置中心地址,一行配置即可實(shí)現(xiàn)一體化配置:

# Nacos注冊(cè)中心+配置中心統(tǒng)一地址(核心,一行搞定)
spring.cloud.nacos.server-addr=192.168.200.100:8848
# 微服務(wù)名稱(chēng)(注冊(cè)到Nacos的唯一標(biāo)識(shí),服務(wù)發(fā)現(xiàn)核心依據(jù))
spring.application.name=service-user

application.yml中,配置應(yīng)用級(jí)業(yè)務(wù)參數(shù):

# 微服務(wù)端口
server:
  port: 8501
# 數(shù)據(jù)源配置
spring:
  datasource:
    type: com.zaxxer.hikari.HikariDataSource
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://192.168.200.100:3306/user_db?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
    username: root
    password: root

配置完成后,我們就可以啟動(dòng)微服務(wù),正常注冊(cè)到Nacos了。但此時(shí),很多人會(huì)遇到本文的核心問(wèn)題——FeignClient Bean重復(fù)注冊(cè)報(bào)錯(cuò)。

二、踩坑現(xiàn)場(chǎng):FeignClient Bean重復(fù)注冊(cè)報(bào)錯(cuò)詳解

1. 報(bào)錯(cuò)現(xiàn)象還原

當(dāng)我們?cè)谖⒎?wù)中引入了Feign依賴(lài),啟動(dòng)服務(wù)時(shí),控制臺(tái)直接拋出如下核心報(bào)錯(cuò):

The bean 'service-account', defined in feign.FeignClientFactoryBean, could not be registered. A bean with that name has already been defined and overriding is disabled.
Action:
Consider renaming one of the beans or enabling overriding by setting spring.main.allow-bean-definition-overriding=true

簡(jiǎn)單翻譯一下:Spring容器中,名為service-account的Bean已經(jīng)存在,無(wú)法重復(fù)注冊(cè),要么重命名Bean,要么開(kāi)啟Bean覆蓋開(kāi)關(guān)。

更詭異的是,當(dāng)我們?nèi)サ鬎eign相關(guān)依賴(lài),服務(wù)就能正常啟動(dòng)并注冊(cè)到Nacos,一加上依賴(lài)就直接報(bào)錯(cuò),很多新手到這里就直接懵了。

2. 報(bào)錯(cuò)根源深度拆解

想要徹底解決問(wèn)題,必須先搞懂報(bào)錯(cuò)的底層邏輯,這里分3個(gè)核心點(diǎn)給大家講透:

核心1:FeignClient注解的Bean生成規(guī)則

當(dāng)我們?cè)诮涌谏咸砑?code>@FeignClient注解時(shí),SpringCloud會(huì)在項(xiàng)目啟動(dòng)時(shí),動(dòng)態(tài)為該接口生成一個(gè)代理對(duì)象,并將這個(gè)代理對(duì)象注入到Spring容器中,成為一個(gè)Bean

而這個(gè)Bean的默認(rèn)名稱(chēng),就是@FeignClient注解中value/name屬性的值(也就是我們要調(diào)用的目標(biāo)微服務(wù)名稱(chēng))。

舉個(gè)例子,下面兩個(gè)接口,都會(huì)生成名為service-account的Bean:

// 第一個(gè)接口
@FeignClient(value = "service-account")
public interface AccountClient {
    @GetMapping("/account/info")
    Result getAccountInfo();
}

// 第二個(gè)接口
@FeignClient(value = "service-account")
public interface AccountRechargeClient {
    @PostMapping("/account/recharge")
    Result recharge();
}

這就是沖突的核心根源:兩個(gè)@FeignClient注解指向同一個(gè)目標(biāo)微服務(wù)(value值相同),會(huì)導(dǎo)致Spring容器嘗試注冊(cè)兩個(gè)同名的Bean,而Spring默認(rèn)禁止同名Bean注冊(cè)。

這里必須劃重點(diǎn):@FeignClientvalue/name屬性絕對(duì)不能隨便修改,它是服務(wù)發(fā)現(xiàn)的核心依據(jù),Spring會(huì)根據(jù)這個(gè)名稱(chēng)去Nacos注冊(cè)中心,找到目標(biāo)微服務(wù)的IP和端口,完成遠(yuǎn)程調(diào)用。一旦修改,服務(wù)發(fā)現(xiàn)直接失效,遠(yuǎn)程調(diào)用就會(huì)報(bào)錯(cuò)。

核心2:@EnableFeignClients的包掃描機(jī)制

很多人會(huì)問(wèn):我的FeignClient接口寫(xiě)在其他依賴(lài)模塊里,為什么當(dāng)前微服務(wù)啟動(dòng)會(huì)掃描到?

這就和啟動(dòng)類(lèi)上的@EnableFeignClients注解息息相關(guān):

  • 如果你沒(méi)有給該注解指定basePackages掃描路徑,它默認(rèn)會(huì)以啟動(dòng)類(lèi)所在的包路徑為根,掃描該包及其所有子包下,所有帶@FeignClient注解的接口
  • 我們通過(guò)maven引入的其他api模塊,只要其FeignClient接口的包路徑,和當(dāng)前啟動(dòng)類(lèi)的包路徑是父子包關(guān)系,就會(huì)被掃描到
  • 依賴(lài)引入的本質(zhì),就是把其他模塊的代碼納入到當(dāng)前項(xiàng)目的類(lèi)路徑中,包掃描自然可以覆蓋到

核心3:Spring容器的Bean唯一性規(guī)則

Spring容器的核心規(guī)則之一:同一個(gè)容器中,Bean的名稱(chēng)必須是全局唯一的,不允許存在兩個(gè)名稱(chēng)相同的Bean,默認(rèn)情況下也禁止同名Bean的覆蓋,這就是報(bào)錯(cuò)的最終觸發(fā)點(diǎn)。

三、兩種解決方案實(shí)戰(zhàn)對(duì)比

搞懂了根源,我們來(lái)看兩種官方推薦的解決方案,分別講解實(shí)現(xiàn)方式、優(yōu)缺點(diǎn)和適用場(chǎng)景。

1. 方案一:為FeignClient指定contextId(精準(zhǔn)解決,推薦首選)

實(shí)現(xiàn)方式

@FeignClient注解提供了一個(gè)contextId屬性,這個(gè)屬性的作用,就是手動(dòng)指定該FeignClient代理對(duì)象在Spring容器中的Bean名稱(chēng),優(yōu)先級(jí)高于默認(rèn)的value/name值。

我們只需要給每個(gè)同名value的FeignClient接口,指定不同的contextId即可,示例如下:

// 第一個(gè)接口,指定contextId為accountClient
@FeignClient(value = "service-account", contextId = "accountClient")
public interface AccountClient {
    @GetMapping("/account/info")
    Result getAccountInfo();
}

// 第二個(gè)接口,指定contextId為accountRechargeClient
@FeignClient(value = "service-account", contextId = "accountRechargeClient")
public interface AccountRechargeClient {
    @PostMapping("/account/recharge")
    Result recharge();
}

修改完成后,重啟服務(wù),兩個(gè)代理對(duì)象的Bean名稱(chēng)分別變成了accountClientaccountRechargeClient,不再?zèng)_突,服務(wù)正常啟動(dòng)。

方案優(yōu)缺點(diǎn)

? 優(yōu)點(diǎn)

  1. 精準(zhǔn)控制,只解決沖突的FeignClient,不影響項(xiàng)目中其他Bean
  2. 無(wú)任何潛在風(fēng)險(xiǎn),不會(huì)出現(xiàn)Bean被意外覆蓋的問(wèn)題
  3. 符合Spring的開(kāi)發(fā)規(guī)范,Bean名稱(chēng)語(yǔ)義化,便于后續(xù)排查問(wèn)題

? 缺點(diǎn)

  1. 當(dāng)項(xiàng)目中FeignClient接口較多時(shí),需要逐個(gè)添加contextId,有少量開(kāi)發(fā)成本
  2. 多人協(xié)作開(kāi)發(fā)時(shí),需要規(guī)范contextId的命名規(guī)則,避免新的命名沖突

2. 方案二:開(kāi)啟Spring Bean同名覆蓋(全局解決)

實(shí)現(xiàn)方式

報(bào)錯(cuò)提示中,官方已經(jīng)給出了這個(gè)方案:通過(guò)配置開(kāi)啟Spring的同名Bean覆蓋功能,讓后注冊(cè)的Bean直接覆蓋之前同名的Bean。

只需要在application.ymlbootstrap.properties中添加如下配置即可:

spring:
  main:
    # 開(kāi)啟同名Bean覆蓋,解決FeignClient沖突
    allow-bean-definition-overriding: true

添加配置后,無(wú)需修改任何FeignClient接口,重啟服務(wù)即可正常啟動(dòng)。

方案優(yōu)缺點(diǎn)

? 優(yōu)點(diǎn)

  1. 配置簡(jiǎn)單,一行代碼解決所有FeignClient沖突問(wèn)題,零開(kāi)發(fā)成本
  2. 無(wú)需修改業(yè)務(wù)代碼,適配性強(qiáng),無(wú)論有多少個(gè)同名FeignClient都能解決
  3. 容器中只會(huì)保留一個(gè)同服務(wù)名的FeignClient代理Bean,減少Bean數(shù)量,降低容器資源消耗

? 缺點(diǎn)

  1. 全局生效,會(huì)影響項(xiàng)目中所有的Bean,存在潛在的覆蓋風(fēng)險(xiǎn)
  2. 如果項(xiàng)目中存在有狀態(tài)的Bean,同名覆蓋會(huì)導(dǎo)致原有Bean的數(shù)據(jù)丟失,引發(fā)線(xiàn)上業(yè)務(wù)故障

四、核心知識(shí)點(diǎn):有狀態(tài)Bean vs 無(wú)狀態(tài)Bean

很多人看到這里會(huì)問(wèn):方案二有風(fēng)險(xiǎn),那到底能不能用?什么時(shí)候能用?

想要回答這個(gè)問(wèn)題,必須先搞懂有狀態(tài)Bean無(wú)狀態(tài)Bean這兩個(gè)核心概念,這也是后端面試的高頻考點(diǎn)。

1. 概念區(qū)分

類(lèi)型核心定義示例覆蓋風(fēng)險(xiǎn)
有狀態(tài)BeanBean內(nèi)部包含成員變量,會(huì)存儲(chǔ)業(yè)務(wù)數(shù)據(jù),同一個(gè)Bean實(shí)例在不同請(qǐng)求中,數(shù)據(jù)會(huì)相互影響包含用戶(hù)會(huì)話(huà)信息的Bean、帶緩存數(shù)據(jù)的工具類(lèi)Bean極高,覆蓋會(huì)直接導(dǎo)致原有數(shù)據(jù)丟失,引發(fā)業(yè)務(wù)異常
無(wú)狀態(tài)BeanBean內(nèi)部不存儲(chǔ)任何業(yè)務(wù)數(shù)據(jù),所有操作都基于方法入?yún)⑼瓿桑粋€(gè)Bean實(shí)例在所有請(qǐng)求中,行為完全一致我們?nèi)粘i_(kāi)發(fā)的@Controller、@Service、@Repository注解的Bean,F(xiàn)eignClient的代理Bean極低,覆蓋不會(huì)影響業(yè)務(wù)邏輯,無(wú)數(shù)據(jù)丟失風(fēng)險(xiǎn)

劃重點(diǎn):我們?nèi)粘i_(kāi)發(fā)中,SpringBoot項(xiàng)目里的Controller、Service、Dao層的Bean,默認(rèn)都是單例的無(wú)狀態(tài)Bean,這也是Spring官方推薦的開(kāi)發(fā)模式。

2. 為什么FeignClient代理Bean可以安全覆蓋?

FeignClient的動(dòng)態(tài)代理Bean,是典型的無(wú)狀態(tài)Bean

  1. 它內(nèi)部不存儲(chǔ)任何業(yè)務(wù)數(shù)據(jù),唯一的作用就是根據(jù)接口定義,發(fā)起遠(yuǎn)程HTTP調(diào)用
  2. 哪怕多個(gè)接口指向同一個(gè)服務(wù)名,生成的代理對(duì)象的核心邏輯完全一致,都是去調(diào)用service-account這個(gè)微服務(wù)
  3. 用一個(gè)代理Bean,完全可以完成該服務(wù)下所有接口的遠(yuǎn)程調(diào)用,多個(gè)代理Bean只會(huì)造成容器資源的冗余浪費(fèi)

所以,對(duì)于FeignClient來(lái)說(shuō),開(kāi)啟Bean覆蓋是完全安全的,不會(huì)有任何業(yè)務(wù)風(fēng)險(xiǎn),還能減少容器中的Bean數(shù)量,提升性能。

但必須強(qiáng)調(diào):如果你的項(xiàng)目中存在自定義的有狀態(tài)Bean,絕對(duì)不要開(kāi)啟全局Bean覆蓋,否則極有可能出現(xiàn)線(xiàn)上故障。

五、面試考點(diǎn)提煉

面試高頻考點(diǎn)提煉

本文內(nèi)容覆蓋了SpringCloud面試中3個(gè)高頻考點(diǎn),給大家總結(jié)好參考答案:

  1. 問(wèn):bootstrap和application配置文件的區(qū)別?

答:bootstrap是SpringCloud提供的,優(yōu)先級(jí)更高,用于微服務(wù)啟動(dòng)的前置配置,比如注冊(cè)中心、配置中心地址;application是SpringBoot原生的,用于應(yīng)用級(jí)業(yè)務(wù)配置,比如數(shù)據(jù)庫(kù)、端口等,后加載。

  1. 問(wèn):SpringCloud中FeignClient的Bean名稱(chēng)沖突怎么解決?

答:兩種方案,一是為每個(gè)FeignClient指定唯一的contextId,手動(dòng)定義Bean名稱(chēng);二是開(kāi)啟spring.main.allow-bean-definition-overriding=true,允許同名Bean覆蓋,同時(shí)要區(qū)分有狀態(tài)和無(wú)狀態(tài)Bean,規(guī)避覆蓋風(fēng)險(xiǎn)。

  1. 問(wèn):Spring中的有狀態(tài)Bean和無(wú)狀態(tài)Bean有什么區(qū)別?

答:有狀態(tài)Bean會(huì)存儲(chǔ)業(yè)務(wù)數(shù)據(jù),同名覆蓋會(huì)導(dǎo)致數(shù)據(jù)丟失,存在風(fēng)險(xiǎn);無(wú)狀態(tài)Bean不存儲(chǔ)數(shù)據(jù),僅提供方法能力,同名覆蓋無(wú)業(yè)務(wù)風(fēng)險(xiǎn),日常開(kāi)發(fā)的Controller、Service、FeignClient代理Bean都是無(wú)狀態(tài)Bean。

結(jié)尾總結(jié)

FeignClient Bean重復(fù)注冊(cè)問(wèn)題,是SpringCloud微服務(wù)開(kāi)發(fā)中最常見(jiàn)的坑點(diǎn)之一,看似只是一個(gè)啟動(dòng)報(bào)錯(cuò),背后卻牽扯到了Spring容器的Bean管理、Feign的動(dòng)態(tài)代理機(jī)制、微服務(wù)的服務(wù)發(fā)現(xiàn)、配置文件加載優(yōu)先級(jí)等多個(gè)核心知識(shí)點(diǎn)。

我們學(xué)習(xí)技術(shù),不能只停留在“復(fù)制配置解決報(bào)錯(cuò)”的層面,更要搞懂報(bào)錯(cuò)的底層根源,理解每個(gè)方案的優(yōu)劣和適用場(chǎng)景,才能在生產(chǎn)環(huán)境中做出最合理的技術(shù)選型,同時(shí)從容應(yīng)對(duì)面試中的各種追問(wèn)。

以上就是SpringCloud FeignClient中Bean重復(fù)注冊(cè)沖突解決方案的詳細(xì)內(nèi)容,更多關(guān)于SpringCloud Bean重復(fù)注冊(cè)沖突的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • java計(jì)算日期相差天數(shù)的4種簡(jiǎn)單方法舉例

    java計(jì)算日期相差天數(shù)的4種簡(jiǎn)單方法舉例

    最近在工作中遇見(jiàn)一個(gè)小需求,要求計(jì)算兩個(gè)日期之間相差幾天,下面這篇文章主要給大家介紹了關(guān)于java計(jì)算日期相差天數(shù)的4種簡(jiǎn)單方法,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-06-06
  • 淺析Spring?Security如何防止CSRF攻擊

    淺析Spring?Security如何防止CSRF攻擊

    CSRF(Cross-Site?Request?Forgery)攻擊,即跨站請(qǐng)求偽造攻擊,本文主要為大家整理了Spring?Security防止CSRF攻擊的相關(guān)方法,大家可以根據(jù)需要進(jìn)行選擇
    2025-07-07
  • Java線(xiàn)程的start方法回調(diào)run方法的操作技巧

    Java線(xiàn)程的start方法回調(diào)run方法的操作技巧

    面試過(guò)程中經(jīng)常會(huì)被面試官問(wèn)到為什么我們調(diào)用start()方法時(shí)會(huì)執(zhí)行run()方法,為什么不能直接調(diào)用run()方法,問(wèn)的一頭霧水,今天小編給大家介紹下Java線(xiàn)程的start方法回調(diào)run方法的操作技巧,需要的朋友參考下吧
    2017-11-11
  • SpringBoot中靜態(tài)訪(fǎng)問(wèn)配置屬性的解決方案對(duì)比

    SpringBoot中靜態(tài)訪(fǎng)問(wèn)配置屬性的解決方案對(duì)比

    在SpringBoot開(kāi)發(fā)中,靜態(tài)訪(fǎng)問(wèn)配置信息是一個(gè)常見(jiàn)需求,尤其是在工具類(lèi)中直接獲取配置值,下面我們就來(lái)看看幾個(gè)常用的方法,大家可以根據(jù)需要選擇
    2025-03-03
  • Java Annotation注解相關(guān)原理代碼總結(jié)

    Java Annotation注解相關(guān)原理代碼總結(jié)

    這篇文章主要介紹了Java Annotation注解相關(guān)原理代碼總結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • Java如何獲取當(dāng)前年份、月份和日期字符串

    Java如何獲取當(dāng)前年份、月份和日期字符串

    Java獲取當(dāng)前年份、月份和日期是通過(guò)Calendar類(lèi)的實(shí)例對(duì)象來(lái)獲取的,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2024-03-03
  • MyBatis使用Map與POJO類(lèi)實(shí)現(xiàn)CRUD操作的步驟詳解

    MyBatis使用Map與POJO類(lèi)實(shí)現(xiàn)CRUD操作的步驟詳解

    本文將通過(guò)實(shí)際案例,詳細(xì)講解在MyBatis中如何使用Map集合和POJO類(lèi)兩種方式實(shí)現(xiàn)數(shù)據(jù)庫(kù)的增刪改查操作,解決常見(jiàn)映射問(wèn)題,提高開(kāi)發(fā)效率,需要的朋友可以參考下
    2025-12-12
  • Maven?pom.xml文件獲取當(dāng)前時(shí)間戳方式

    Maven?pom.xml文件獲取當(dāng)前時(shí)間戳方式

    這篇文章主要介紹了Maven?pom.xml文件獲取當(dāng)前時(shí)間戳方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • Maven項(xiàng)目打包時(shí)添加本地Jar包的操作步驟

    Maven項(xiàng)目打包時(shí)添加本地Jar包的操作步驟

    在 Maven 項(xiàng)目開(kāi)發(fā)中,我們經(jīng)常會(huì)遇到需要引入本地 Jar 包的場(chǎng)景,比如使用未發(fā)布到中央倉(cāng)庫(kù)的第三方庫(kù)或者處理版本沖突的依賴(lài)項(xiàng),本文將詳細(xì)介紹如何通過(guò) Maven 命令將本地 Jar 包安裝到本地倉(cāng)庫(kù),并在項(xiàng)目中正確引用,需要的朋友可以參考下
    2025-05-05
  • SpringBoot中的內(nèi)容協(xié)商器圖解

    SpringBoot中的內(nèi)容協(xié)商器圖解

    本文通過(guò)圖文解說(shuō)加代碼的形式給大家介紹了SpringBoot中的內(nèi)容協(xié)商器知識(shí),需要的朋友參考下吧
    2017-11-11

最新評(píng)論

平昌县| 海口市| 乌拉特后旗| 彝良县| 闽侯县| 彰武县| 莒南县| 黔东| 仁怀市| 麟游县| 灌阳县| 景泰县| 英吉沙县| 华坪县| 溧水县| 古浪县| 古交市| 邯郸市| 玉林市| 中卫市| 丰城市| 紫阳县| 佛学| 叙永县| 黄龙县| 巴林左旗| 曲水县| 尼勒克县| 达日县| 冷水江市| 汝南县| 独山县| 岳阳县| 桂林市| 九江市| 长沙市| 永嘉县| 永泰县| 绥德县| 舟山市| 泽普县|