Потеря Spring @Value ("$ {}") при создании экземпляра класса - PullRequest
0 голосов
/ 09 июня 2019

Я использую SpringBoot 2.1.3 (Embedded Tomcat) + Thymeleaf 3.0 + Java 8.

У меня есть простой класс, подобный этому:

@Data
public class Machine {
   private Integer price;
   @Value("${settings.default}")
   private String settings;
}

И простой application.properties:

settings.default=deafult

Но когда я все равно создаю экземпляр класса в коде:

Machine m = new Machine();
System.out.println(m.getSettings);

Возвращает ноль. Обвиуослы, если я сделаю:

@Data
public class Machine {
   private Integer price;
   private String settings = "Default";
}

Это работает .. Или, если я использую это значение внутри метода класса, оно работает снова. В чем дело? Могу ли я сделать что-то подобное?

Спасибо

1 Ответ

0 голосов
/ 09 июня 2019

Класс должен быть объявлен с аннотациями стереотипа для использования @Value

@Component
public class Machine {
   private Integer price;
   @Value("${settings.default}")  
   private String settings;
}

И, конечно, вам нужно автоматически связать класс Machine (Spring определил bean-компонент), создание нового объекта Object не получитзначение, поэтому использовать

@Service
public class FooService {
  @Autowire
  private Machine machine;

  public void fooMethod() {
    System.out.println(machine.getSettings()); // default
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...