инициализация и график весенней загрузки - PullRequest
0 голосов
/ 12 марта 2020

Привет, я прочитал этот фрагмент кода:


@Configuration
@Singleton
public class myConfig {
    private static final org.apache.logging.log4j.Logger LOGGER = LogManager.getLogger(myConfig.class);


    public OfflineAttributesComputer offlineAttributesComputer;

    @PostConstruct
    public void init() {
        offlineAttributesComputer = getOfflineAttributesComputer();
    }

    public OfflineAttributesComputer getOfflineAttributesComputer(){
        OfflineAttributesComputer computer = new OfflineAttributesComputer();
        LOGGER.info("Successfully initialized offline computer.");
        return computer;
    }

    @Scheduled(fixedRate = 600000)
    public void updateOfflineAttributesComputer(){
        try {
            offlineAttributesComputer = getOfflineAttributesComputer();
            LOGGER.info("Successfully updated offline computer.");
        } catch (Exception e) {
            throw new EventBrokerException("Failed.", e);
        }
    }
}

Функция basi c аналогична инициализации одноэлементного объекта и после инициализации присваивает offlineAttributesComputer некоторое значение. затем каждые десять минут обновляйте переменную.

Есть некоторые моменты, которые я не понимаю:

  1. необходимо @ Singleton необходимо? что произойдет, если мы удалим его 101

  2. в классе, определенном publi c OfflineAttributesComputer offlineAttributesComputer ? мы должны использовать publi c stati c OfflineAttributesComputer offlineAttributesComputer?

  3. зачем нам нужно @ PostConstruct , мы можем просто инициализировать обычным способом и запланировать обновить?

1 Ответ

1 голос
/ 12 марта 2020
  1. необходимо @Singleton? что произойдет, если мы удалим его?

Ну, это не аннотация Spring. Я считаю, что это не нужно, поскольку Singleton является областью по умолчанию, см. Здесь: Область действия класса @Configuration весной

в классе определено public OfflineAttributesComputer offlineAttributesComputer? мы должны использовать public static OfflineAttributesComputer offlineAttributesComputer?

Нет, static не требуется. Вы смешиваете реализацию шаблона проектирования Singleton из чистого Java с Spring.

зачем нам @PostConstruct, можем ли мы просто инициализировать обычным способом и запланировать обновление?

Из кода, который вы разместили, он не нужен, я имею в виду, что это можно сделать в геттере НО OfflineAttributesComputer не является бобом. Вероятно, автор не хотел, чтобы другие могли иметь возможность автоматического подключения в других классах ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...