Весенняя загрузка @Value NullPointerException - PullRequest
0 голосов
/ 05 июля 2019

Я пишу приложение Spring Boot и пытаюсь загрузить некоторые значения из файла свойств, используя аннотацию @Value.Однако переменные с этой аннотацией остаются нулевыми, хотя я считаю, что они должны получить значение.

Файлы расположены в src/main/resources/custom.propertes и src/main/java/MyClass.java.

(я удалил частикод, который я считаю неуместным из приведенных ниже фрагментов)

MyClass.java

@Component
@PropertySource("classpath:custom.properties")
public class MyClass {
    @Value("${my.property:default}")
    private String myProperty;

    public MyClass() {
        System.out.println(myProperty); // throws NullPointerException
    }
}

custom.properties

my.property=hello, world!

Что я должен сделать, чтобы убедиться, что я могу прочитать значения из моего файла свойств?

Спасибо!

1 Ответ

4 голосов
/ 05 июля 2019

@value будет вызвано после создания объекта.Поскольку вы используете свойство внутри конструктора, следовательно, оно недоступно.

В любом случае, вы должны использовать инъекцию конструктора.Это облегчает тестирование вашего класса.

public MyClass(@Value("${my.property:default}") String myProperty) {
    System.out.println(myProperty); // doesn't throw NullPointerException
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...