簡體   English   中英

spring.messages.basename 可以是 IP 地址嗎

[英]Can spring.messages.basename be an IP Address

spring.messages.basename設置為 IP 地址,如:

spring:
  messages:
    basename: http://1.2.3.4:8888/messages.properties 

那是 spring 雲配置服務器的 IP。 當應用程序啟動時,它會嘗試向該 url 發送請求,但所有點都被斜杠替換:

s.n.www.protocol.http.httpurlconnection  : ProxySelector Request for http://1/2/3/4:8888/messages.properties

由於 IP 地址混亂,連接掛起,應用程序無法正常啟動。

調試源代碼,發現此方法org.springframework.boot.autoconfigure.context.MessageSourceAutoConfiguration.ResourceBundleCondition#getResources負責損壞的 IP。

org.springframework.boot.autoconfigure.context.MessageSourceAutoConfiguration.ResourceBundleCondition#getResources

此外,應用配置中已經有一個 messageSource bean,例如:

@Bean(name = "messageSource")
public MessageSource messageSource(@Value("${spring.messages.basename:}") String basename) {
 ...
}

因此,當為格式錯誤的 URL 請求配置超時時,應用程序仍然可以成功啟動並加載正確的消息。

所以問題是:

  1. 為什么MessageSourceAutoConfiguration試圖發送對應該在類路徑中的資源的請求(該方法試圖從類路徑中獲取資源)?
  2. 當已經為此創建了一個 bean 時, MessageSourceAutoConfiguration是否應該加載消息資源?
  3. 如何禁用 MessageSourceAutoConfiguration 或擺脫格式錯誤的 IP 請求而無需為其設置超時?
  4. spring.messages.basename設置為 IP 地址是否有效?

spring-boot版本:2.6.6 spring版本:5.3.18

預先感謝您的幫助。

您不能為 spring.messages.basename 指定spring.messages.basename 請參閱此頁面,其中顯示:

spring.messages.basename支持以逗號分隔的位置列表,可以是 package 限定符,也可以是從類路徑根解析的資源。

它是指向類路徑內文件的資源名稱,而不是 URL。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM