Функция SpEL меняет строку - PullRequest
0 голосов
/ 03 марта 2020

Я пытаюсь взять строку из свойств, запустить операцию над ней, а затем сохранить ее как переменную с аннотацией @Value. К сожалению, когда я использую синтаксис #{'${variable}'}, который мне нужен для использования SpEL, строка изменяется. Если у меня есть две двойные кавычки (""), они заменяются на одну двойную кавычку ("), которая не позволяет мне десериализовать строку. Как запретить Spring удалить эту 2-ю кавычку?

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": ""}

Ответы [ 2 ]

0 голосов
/ 04 марта 2020

Почему вы хотите загрузить его в String? Загрузите вместо этого в Map<String, String>.

@Value("#{${myValue}}")
public void printWithSpEL(Map<String, String> withSpEL){
    System.out.println(withSpEL);
}
0 голосов
/ 03 марта 2020

Зачем вам нужно использовать SpEL для такого простого значения? Достаточно заполнителя свойства.

Или это просто пример, основанный на чем-то более сложном.

Для SpEL вам нужны тройные кавычки:

myValue={"myWorkingKey": "Hi!", "myNonWorkingKey": """}
...