Загружает ли каждый экземпляр класса в Spring переменные по умолчанию из файла application.properties? - PullRequest
0 голосов
/ 14 апреля 2020

Вопрос весенних аннотаций. Я использую значение по умолчанию, например,

@Service
public class MyClient{
@Value("${apikey}")
private String apikey;
    public MyClient(){}
}

Я полагаю, что каждый экземпляр этого класса должен инициализировать значение apikey значением по умолчанию apikey из файла application.properties. Это не так? Я спрашиваю, потому что я нахожу apikey равным нулю после того, как я создал экземпляр объекта MyClient.

1 Ответ

0 голосов
/ 15 апреля 2020

Ваш класс аннотирован @Service, и поэтому это бин с пружинным управлением. По умолчанию все пружинные бины являются одноэлементными, поэтому существует только в одном экземпляре.

Если вы попытаетесь создать этот бин вручную, автоматическое подключение @value не будет работать, потому что вы пропустите инициализацию пружины.

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

...