SpEL 函数更改字符串
SpEL function changes String
我正在尝试从属性中获取字符串,运行 对其进行操作,然后将其存储为带有 @Value
注释的变量。不幸的是,当我使用我需要使用的 #{'${variable}'}
语法来使用 SpEL 时,字符串会发生变化。如果我有两个双引号 (""
),它们将更改为单个双引号 ("
),这会阻止我反序列化字符串。如何防止 Spring 删除第二个引号?
myProperties.properties
myValue={"myWorkingKey": "Hi!", "myNonWorkingKey": ""}
MyClass.java
public class MyClass {
@Value("#{'${myValue}'}")
public void printWithSpEL(String withSpEL){
System.out.println(withSpEL);
}
@Value("${myValue}")
public void printWithOut(String without){
System.out.println(without);
}
}
启动后结果:
{"myWorkingKey": "Hi!", "myNonWorkingKey": "}
{"myWorkingKey": "Hi!", "myNonWorkingKey": ""}
这么简单的值为什么要用SpEL? 属性 占位符就足够了。
或者这只是一个基于更复杂事物的示例。
对于 SpEL,您需要三引号:
myValue={"myWorkingKey": "Hi!", "myNonWorkingKey": """}
为什么要加载到 String
?加载到 Map<String, String>
.
@Value("#{${myValue}}")
public void printWithSpEL(Map<String, String> withSpEL){
System.out.println(withSpEL);
}
我正在尝试从属性中获取字符串,运行 对其进行操作,然后将其存储为带有 @Value
注释的变量。不幸的是,当我使用我需要使用的 #{'${variable}'}
语法来使用 SpEL 时,字符串会发生变化。如果我有两个双引号 (""
),它们将更改为单个双引号 ("
),这会阻止我反序列化字符串。如何防止 Spring 删除第二个引号?
myProperties.properties
myValue={"myWorkingKey": "Hi!", "myNonWorkingKey": ""}
MyClass.java
public class MyClass {
@Value("#{'${myValue}'}")
public void printWithSpEL(String withSpEL){
System.out.println(withSpEL);
}
@Value("${myValue}")
public void printWithOut(String without){
System.out.println(without);
}
}
启动后结果:
{"myWorkingKey": "Hi!", "myNonWorkingKey": "}
{"myWorkingKey": "Hi!", "myNonWorkingKey": ""}
这么简单的值为什么要用SpEL? 属性 占位符就足够了。
或者这只是一个基于更复杂事物的示例。
对于 SpEL,您需要三引号:
myValue={"myWorkingKey": "Hi!", "myNonWorkingKey": """}
为什么要加载到 String
?加载到 Map<String, String>
.
@Value("#{${myValue}}")
public void printWithSpEL(Map<String, String> withSpEL){
System.out.println(withSpEL);
}