Рубрики
Без рубрики

Введение значения в статическое поле весной

Узнайте, как внедрить значение в статическое поле в Java

Автор оригинала: baeldung.

1. Обзор

В этом учебнике мы увидим, как мы можем привнести значение из файла свойств Java в статическое поле с Spring.

2. Проблема

Начнем с того, что давайте представим, что мы устанавливаем свойство файла свойств:

name = Inject a value to a static field

После этого мы хотим привнести его значение в переменную экземпляра.

Это как правило, может быть сделано с помощью @Value аннотация на поле экземпляра:

@Value("${name}")
private String name;

Однако, когда мы пытаемся применить его к статическому полю, мы обнаружим, что он все еще будет нулевой :

@Value("${name}")
private static String NAME_NULL;

Это потому, что Весна не поддерживает @Value на статических полях .

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

3. Решение

Во-первых, давайте объявим статическую переменную, которую мы хотим ввести NAME_STATIC .

После этого мы создадим метод сеттера, называемый setNameStatic и аннотировать его с @Value аннотация:

@RestController
public class PropertyController {

    @Value("${name}")
    private String name;

    private static String NAME_STATIC;

    @Value("${name}")
    public void setNameStatic(String name){
        PropertyController.NAME_STATIC = name;
    }
}

Давайте попробуем разобраться в том, что происходит выше.

Во-первых, НедвижимостьКонтроллер , который является Рестконтроллер , в настоящее время инициализированы весна.

После этого Весна ищет Значение аннотированные поля и методы.

Весна использует инъекция зависимости для заполнения определенного значения при находок @Value аннотация. Однако вместо того, чтобы передать значение переменной экземпляра, оно передается неявному сеттеру. Затем этот сеттер обрабатывает население нашей NAME_STATIC ценность.

4. Заключение

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

Как всегда, код доступен более на GitHub .