Как инициализировать структуру данных перед запуском весеннего приложения? - PullRequest
0 голосов
/ 05 октября 2019

У меня есть некоторая структура данных для ее инициализации. Мне нужно сделать запрос к базе данных, а затем вызвать объект, который подготовит данные для структуры данных, и только затем инициализировать их. Как я могу сделать это до запуска приложения spring-mvc?

Я пытаюсь использовать аннотации, такие как @PostConstruct и @EventListener (ApplicationReadyEvent.class), но они запускаются с помощью приложения Spring и в данный момент структура данных не инициализирована.

Пример кода:

public class DataStructure{
    Collection data = new Collection();//some kind of collection



    @PostConstruct
    public void initDS(){
        DataFromDataBase data = ...;
        SomeObjectThatPrepareData obj = new SomeObjectThatPrepareData(data);

        Collection preparedData = obj.prepareData();

        preparedData.forEach(DataStructure::addData);


    }

    private void addData(Data data){ ... }

    ...
}

public class ClassThatUseDataStucture{
     private static DataStructure readyData;
     static{
         readyData = new DataStructure();
         readyData.initDS();
     }

    ...

}

1 Ответ

2 голосов
/ 05 октября 2019

Если вы хотите что-то настроить / инициализировать при запуске загрузочного приложения Spring, вы должны использовать ApplicationRunner или CommandLineRunner.

. Spring boot предоставляет интерфейс ApplicationRunner с методом обратного вызова run ()который может быть вызван при запуске приложения после создания экземпляра приложения Spring.

например,

@Component
public class AppStartupRunner implements ApplicationRunner {

    @Override
    public void run(ApplicationArguments args) throws Exception {
        // Setup or initialization activities
    }
}

Или Вы можете создать Бин, как предложено Аникетом в комментариях:

@Bean 
ApplicationRunner thisWillRunAutomatically() 
{
    return args -> { ... };
}

Подробнее о обратных вызовах Spring при загрузке можно прочитать здесь: Обратные вызовы Spring при загрузке

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