[英]Spring Boot doesn't include special characters while injecting Map from application.yml
我有一個簡單的Spring Boot項目,旨在從application.yml
讀取和轉換數據並將其轉換為Java Map<String,String>
。 在項目的業務層中,我需要使用電子郵件地址作為鍵來填充該地圖。 問題從這里開始。 Spring(或Spring Boot)無法按我的要求工作。 它在鍵端完全忽略@
字符,但在值端正常工作。
以下是一些代碼:
應用程序
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
Bootstrap.java
@Slf4j
@Component
@ConfigurationProperties(prefix = "foo-filter")
public class Bootstrap implements CommandLineRunner {
@Setter
private Map<String, String> barFilters;
@Setter
private Map<String, String> bazFilters;
@Override
public void run(String... args) {
barFilters.forEach((key, value) -> log.info(key + " -> " + value));
bazFilters.forEach((key, value) -> log.info(key + " -> " + value));
}
}
application.yml
foo-filter:
bar-filters:
filtered1@mail.com: all
filtered2@mail.com: all
filtered3@mail.com: some
filtered4@mail.com: none
baz-filters:
filtered1: all@mail.com
filtered2: none@mail.com
最后,這是控制台輸出:
filtered1mail.com -> all
filtered2mail.com -> all
filtered3mail.com -> some
filtered4mail.com -> none
filtered1 -> all@mail.com
filtered2 -> none@mail.com
第一個Map( barFilters
)鍵不包含@
字符。 我嘗試過的另一件事:
->在兩邊加上雙引號( "
)。
->使用帶轉義符( \\@
)的\\@
。
->使用等效於@( U+0040
)的Unicode。
->使用等效於@( \@
)的轉義序列。
->使用等效於@( @
)的HTML代碼。
他們都沒有工作。
為什么會發生這種情況,我該如何解決呢? 這是錯誤還是功能?
我有一個簡單的Spring Boot項目,旨在從application.yml
讀取和轉換數據並將其轉換為Java Map<String,String>
。 在項目的業務層中,我需要使用電子郵件地址作為鍵來填充該地圖。 問題從這里開始。 Spring(或Spring Boot)無法按我的要求工作。 它在鍵端完全忽略@
字符,但在值端正常工作。
以下是一些代碼:
應用程序
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
Bootstrap.java
@Slf4j
@Component
@ConfigurationProperties(prefix = "foo-filter")
public class Bootstrap implements CommandLineRunner {
@Setter
private Map<String, String> barFilters;
@Setter
private Map<String, String> bazFilters;
@Override
public void run(String... args) {
barFilters.forEach((key, value) -> log.info(key + " -> " + value));
bazFilters.forEach((key, value) -> log.info(key + " -> " + value));
}
}
application.yml
foo-filter:
bar-filters:
filtered1@mail.com: all
filtered2@mail.com: all
filtered3@mail.com: some
filtered4@mail.com: none
baz-filters:
filtered1: all@mail.com
filtered2: none@mail.com
最后,這是控制台輸出:
filtered1mail.com -> all
filtered2mail.com -> all
filtered3mail.com -> some
filtered4mail.com -> none
filtered1 -> all@mail.com
filtered2 -> none@mail.com
第一個Map( barFilters
)鍵不包含@
字符。 我嘗試過的另一件事:
->在兩邊加上雙引號( "
)。
->使用帶轉義符( \\@
)的\\@
。
->使用等效於@( U+0040
)的Unicode。
->使用等效於@( \@
)的轉義序列。
->使用等效於@( @
)的HTML代碼。
他們都沒有工作。
為什么會發生這種情況,我該如何解決呢? 這是錯誤還是功能?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.