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 が空白です