パラメータ「serviceName」が不正です、serviceName が空白です、SpringCloudAlibaba の落とし穴レコード

0 まえがき

パラメータ「serviceName」が不正です、serviceName が空白です、SpringCloudAlibaba

nacos とゲートウェイの構成プロセスを再編成し、以前に構成された pom ファイルを再編成し、ゲートウェイ サービスがエラーを報告したことを確認します。

現在の環境構成

ここに画像の説明を挿入します
ここに画像の説明を挿入します

公式推奨構成

ここに画像の説明を挿入します
アドレス リンク。具体的な構成については、公式 Web サイトのドキュメントを参照してください
https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6 %98%8E

エラー内容

java.lang.IllegalArgumentException: Param 'serviceName' is illegal, serviceName is blank

設定ファイルで設定されているポート番号は 88 ですが、実際の起動ポートは 8080 です。
ここに画像の説明を挿入します

問題分析

後でソースコードと比較すると、SpringBoot2.4 以降はデフォルトで bootstrap.yaml がロードされなくなります。

  • 2.4 より前のバージョン spring.cloud.bootstrap.enabled = true
public void onApplicationEvent(ApplicationEnvironmentPreparedEvent event) {
    
    
        ConfigurableEnvironment environment = event.getEnvironment();
        if ((Boolean)environment.getProperty("spring.cloud.bootstrap.enabled", Boolean.class, true)) {
    
    
            if (!environment.getPropertySources().contains("bootstrap")) {
    
    
                ConfigurableApplicationContext context = null;
                String configName = environment.resolvePlaceholders("${spring.cloud.bootstrap.name:bootstrap}");
                Iterator var5 = event.getSpringApplication().getInitializers().iterator();

                while(var5.hasNext()) {
    
    
                    ApplicationContextInitializer<?> initializer = (ApplicationContextInitializer)var5.next();
                    if (initializer instanceof ParentContextApplicationContextInitializer) {
    
    
                        context = this.findBootstrapContext((ParentContextApplicationContextInitializer)initializer, configName);
                    }
                }

                if (context == null) {
    
    
                    context = this.bootstrapServiceContext(environment, event.getSpringApplication(), configName);
                    event.getSpringApplication().addListeners(new ApplicationListener[]{
    
    new BootstrapApplicationListener.CloseContextOnFailureApplicationListener(context)});
                }

                this.apply(context, event.getSpringApplication(), environment);
            }
        }
    }
  • 2.4 以降のバージョン spring.cloud.bootstrap.enabled = false
public static boolean bootstrapEnabled(Environment environment) {
    
    
        return (Boolean)environment.getProperty("spring.cloud.bootstrap.enabled", Boolean.class, false) || MARKER_CLASS_EXISTS;
    }

解決

1 プログラムパラメータを設定する

構成方法については、これら 2 つのリンクを参照してください。構成方法は、IDEA のバージョンごとに異なります。

https://blog.csdn.net/qq_42164368/article/details/108073538 IDEA パラメーターの設定方法
https://blog.csdn.net/weixin_43423377/article/details/118222124 2021 年の新バージョンの idea は Java プログラムに起動パラメーターを追加します

spring.cloud.bootstrap.enabled=true
ここに画像の説明を挿入します

2 POM ファイル構成を追加する

独自のバージョンに応じてバージョンを指定し、ドキュメントを参照して対応する Spring Boot バージョンを確認してください。

<!--SpringBoot2.4.x之后默认不加载bootstrap.yml文件,需要在pom里加上依赖-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-bootstrap</artifactId>
     <version>3.1.3</version>
</dependency>

参考

https://developer.aliyun.com/article/937388
SpringCloudAlibaba 落とし穴日記 (1) nacos エラー: Param 'serviceName' が不正です、serviceName が空白です

おすすめ

転載: blog.csdn.net/qq_41398619/article/details/133121332