Spring boot `@ Value` всегда равен нулю, несмотря на значение по умолчанию - PullRequest
0 голосов
/ 16 июня 2020

Я использую

@Service
public class Foo
{
    @Value ("${this.does.not.exist: 10}")
    private static int bar;
}

Поскольку значение не существует в конфигурации, я ожидал, что bar будет иметь значение 10, но это 0.

Я также пробовал @Value ("${this.does.not.exist: #{10}}") согласно этот ответ , он все еще равен нулю.

Почему это не сработало?

Ответы [ 2 ]

1 голос
/ 16 июня 2020

Я пропустил ключевое слово static в OP (теперь отредактированном), и это была ошибка.

0 голосов
/ 16 июня 2020

У меня работает следующий код:

@Service
public class MyService {
    @Value("${this.does.not.exist: 10}")
    private int val;

С последней версией spring -boot (и в основном это должно быть с любой другой версией).

Так что проблема должна быть в другом месте .

Пожалуйста, проверьте следующее:

  • Убедитесь, что Foo действительно управляется Spring (он находит это в процессе сканирования компонентов). В противном случае никто не будет вводить значение.

  • Убедитесь, что вы не пытаетесь прочитать значение из конструктора или чего-то еще: весной он сначала создает объект (и в этот момент значение поля действительно равно 0), и только после этого запускаются постпроцессоры bean для ввода значений, автоматического подключения и т. д. c.

...