背景
本來是用的 SpringBoot 2.1.0,和 Nacos 版本忘記了。
後來升級 SpringBoot 2.5.4,然後 Spring Cloud 那一些也需要升級,隨後升級到了 Nacos 版本 2021.1。
升級完之後,將 bootstrap.yml 的 spring.cloud 那些註釋掉,啟動還是會報錯,Nacos 連線失敗。
未升級前只要將 spring.cloud nacos 那些註釋掉,頂多啟動的時候控制檯報些錯,但不會導致啟動不了。
解決
在 bootstrap.yml 中,不需要將那些註釋掉了,只需要加兩個 enabled 的引數設定為 false 就可以了。
spring:
application:
name: keepAccount
cloud:
nacos:
discovery:
enabled: false
server-addr: 127.0.0.1:8848
config:
enabled: false
server-addr: 127.0.0.1:8848
file-extension: yml
這樣子,在啟動就不會報錯了。
之前的 CrossConfig 需要改一下,將 allowedOrigins("*")
改為 allowedOriginPatterns("*")
。
@Configuration
public class CrossConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
// .allowedOrigins("*")
.allowedOriginPatterns("*")
.allowedMethods("GET", "HEAD", "POST", "PUT", "DELETE", "OPTIONS")
.allowCredentials(true)
.maxAge(3600)
.allowedHeaders("*");
}
}
背景
和問題 1 有關聯,因為 SpringBoot 升級,SpringCloud 也需要升級,當升級後重啟 SpringBoot,發現 bootstrap.yml 中配置的應用埠號沒生效,變成了預設的 8080.
問題原因
從Spring Boot 2.4版本開始,配置檔案載入方式進行了重構。
另外也有配置的預設值變化,原來預設啟用 true 現在變更為 false 如下:
version:2.4之前
package org.springframework.cloud.bootstrap;
public class BootstrapApplicationListener implements ApplicationListener<ApplicationEnvironmentPreparedEvent>, Ordered {
public void onApplicationEvent(ApplicationEnvironmentPreparedEvent event) {
ConfigurableEnvironment environment = event.getEnvironment();
if ((Boolean)environment.getProperty("spring.cloud.bootstrap.enabled", Boolean.class, true)) {
}
}
}
version:2.4.2
package org.springframework.cloud.util;
public abstract class PropertyUtils {
public static boolean bootstrapEnabled(Environment environment) {
return (Boolean)environment.getProperty("spring.cloud.bootstrap.enabled", Boolean.class, false) || MARKER_CLASS_EXISTS;
}
}
解決辦法
pom檔案中引入如下配置
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
指定執行引數 spring.cloud.bootstrap.enabled 值為 true
spring:
cloud:
bootstrap:
enabled: true
springboot專案打包時提示“程式包xxx不存在,找不到符號
SpringCloud版本升級後bootstrap.yml配置不生效
報錯:When allowCredentials is true, allowedOrigins cannot contain the special value
本作品採用《CC 協議》,轉載必須註明作者和本文連結