Свойства Spring Boot. Почему я получаю сообщение об ошибке EL1041E: после анализа допустимого выражения в выражении «хэшJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Свойства Spring Boot. Почему я получаю сообщение об ошибке EL1041E: после анализа допустимого выражения в выражении «хэш

Сообщение Anonymous »

Я добавил файл свойств в свое загрузочное приложение Spring, который использую для инициализации некоторых значений для моей программы. Это работает как для простых значений, так и для некоторых более сложных значений, например примеров, которые я создал для value.a и value.b, показанных ниже.

Код: Выделить всё

my.value.a=a
my.value.b=b

value.a = #{ systemEnvironment['MY_VALUE_A'] != null ? systemEnvironment['MY_VALUE_A'] : '${my.value.a}' }
value.b = #{ systemEnvironment['MY_VALUE_B'] != null ? systemEnvironment['MY_VALUE_B'] : '${my.value.b}' }
Мне бы хотелось сделать что-нибудь необычное, чтобы объединить их, как в value.c ниже, однако это выдает ошибку. Это я пытаюсь сделать что-то сложное для файла свойств? Или я где-то допустил ошибку?

Код: Выделить всё

value.c = #{ systemEnvironment['MY_VALUE_C'] != null ? systemEnvironment['MY_VALUE_C'] : '#{ ${value.a}:${value.b} }' }
Он не компилируется с value.c, как показано ниже, но выдает трассировку стека с ошибкой:


InvocateTargetException: Ошибка создания bean-компонента с именем «MyProperties»: неудовлетворенная зависимость, выраженная через параметр метода «setValueC» 0; вложенным исключением является org.springframework.beans.factory.BeanExpressionException: не удалось выполнить синтаксический анализ выражения; вложенным исключением является org.springframework.expression.spel.SpelParseException: EL1041E: после анализа допустимого выражения в выражении остается еще больше данных: 'hash(#)' -> [Справка 1]


Чтобы установить значения в Java, у меня есть файл свойств, и метод, в котором устанавливаются значения, выглядит следующим образом:

Код: Выделить всё

@Value("${value.a}")
public void setValueA(String value) {
this.a = value;
}

@Value("${value.b}")
public void setValueB(String value) {
this.b = value;
}

@Value("${value.c}")
public void setValueC(String value) {
this.c = value;
}
Выход, которого я пытаюсь достичь, заключается в том, чтобы value.c входил как a:b - или любые переменные среды, которые заменяются a и b, разделенные двоеточием.

Я не очень знаком с этим, поэтому, возможно, я делаю это совершенно неправильно. Можно ли таким способом добиться того, чего я хочу? Что я сделал не так, если это так?
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»