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

Как выполнить код при запуске приложения Spring

Блог первоначально опубликован в моем блоге js blogs.github.технологии ввода-вывода, используемые приложением… С тегом java, для начинающих, учебное пособие, webdev.

Блог первоначально опубликован в моем блоге js blogs.github.io

  • Вступление
  • Используемые технологии
  • События приложения
  • Бегун приложения

Вступление

Сталкивались ли вы когда-нибудь с ситуацией, когда вам приходится выполнять некоторые задачи сразу после запуска приложения Spring/Spring Boot? т.е. Инициализировать некоторые данные в базу данных, инициализировать константы уровня приложения, выполнить вызов API и т.д.

Есть несколько способов добиться этого. Здесь я собираюсь обсудить:

  1. События приложения
  2. Бегун приложения

Используемые технологии

  1. Java 11
  2. Пружинный ботинок 2.2.4
  3. Gradle 6.0.1

События приложения

Spring framework запускает различные события. Для нашего варианта использования нас больше заинтересует ContextStartedEvent и ContextRefreshedEvent . ContextStartedEvent событие, запускаемое во время запуска контекста. ContextRefreshedEvent событие, запускаемое во время запуска или обновления контекста.

@Component
public class EventHandler {
    @EventListener(ContextStartedEvent.class)
    public void handleContextStartEvent(ContextStartedEvent e) {
        // Write your code here
    }

    @EventListener(ContextRefreshedEvent.class)
    public void handleContextRefreshEvent(ContextRefreshedEvent e) {
        // Write your code here
    }
    // Or you can handle both the events in 1 method  

    @EventListener({ContextStartedEvent.class, ContextRefreshedEvent.class})
    public void handleBoth(ApplicationContextEvent e) {
        if (e instanceof ContextStartedEvent) {

        } else {

        }
    }
}

Бегун приложения

Spring Boot предоставляет интерфейс с именем ApplicationRunner , любой компонент, реализующий этот интерфейс, должен выполняться, когда он содержится в SpringApplication .

@Component
public class DBInitializer implements ApplicationRunner {

    private final UserRepository userRepository;

    private DBInitializer(UserRepository userRepository) {
        this.userRepository = userRepository;
    }

    @Override
    public void run(ApplicationArguments args) throws Exception {
        // Initialize user here
    }
}

или вышеизложенное может быть использован

@Configuration
public class Config {

@Bean
    public ApplicationRunner initializeUser(UserRepository userRepository) {
        return args -> {
            // Initialize user here
        };
    }
}

Application Runner предоставляет Аргументы приложения в методе run, который используется для получения аргументов командной строки путем вызова getSourceArgs() . Вы также можете получить проанализированные аргументы, используя этот класс. т.е.

Допустим, вы передали аргументы командной строки, такие как --source/usr/local --print-only --target/tmp/local

Таким образом, вызов метода для

  1. getOptionNames() в Аргументы приложения вернет набор аргументов – [‘source’, ‘только для печати’, ‘target’]
  2. содержит параметр(имя строки) проверяет если аргумент содержит
  3. getoptionvalue(имя) возвращает список значений параметра. getOptionValues('source') вернет список – [‘/usr/local’]

Оригинал: “https://dev.to/jeetmp3/how-to-execute-code-on-spring-application-start-up-59ab”