Создайте свою собственную фоновую среду SpringBoot с нуля (18)

Spring Boot Java
Всем привет, в этой главе мы добавляем функцию инициализации ресурсов при старте проекта. Если у вас есть какие-либо вопросы, пожалуйста, свяжитесь со мной по адресу mr_beany@163.com. Также попросите руководства великих богов, спасибо

В нашей реальной работе мы всегда сталкиваемся с такими требованиями: при запуске проекта нам необходимо выполнить некоторые операции инициализации, такие как чтение информации из конфигурационного файла, подключение к базе данных, очистка информации из кеша и т.д. В Spring Boot нам предоставлены два интерфейса, чтобы помочь нам выполнить такие требования. Именно об этих двух интерфейсах мы и поговорим сегодня.CommandLineRunnerиApplicationRunner, а время их выполнения — когда контейнер запущен и завершен.

Первый: общие черты и различия

Общие моменты: во-первых, время выполнения выполняется при запуске контейнера, во-вторых, оба интерфейса имеют метод run();  

Разница: параметром метода запуска в ApplicationRunner является ApplicationArguments, а параметром метода запуска в интерфейсе CommandLineRunner является массив строк.

Второе: используйте ApplicationRunner для выполнения требований

Создать ядро→startuprunner→StartupRunner1

package com.example.demo.core.startuprunner;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;

@Component
@Order(value = 1)
public class StartupRunner1 implements ApplicationRunner {

    private static final Logger logger = LoggerFactory.getLogger(StartupRunner1.class);

    @Override
    public void run(ApplicationArguments var1) throws Exception{
        logger.info("服务器启动成功!<<<<使用ApplicationRunner接口");
    }
}

Примечание: необходимо добавить @Component, иначе SpringBoot не сможет просканировать этот класс и не выполнит его.

Запускаем сервер и видим


Третий: используйте CommandLineRunner для выполнения требований

Создать ядро→startuprunner→StartupRunner2

package com.example.demo.core.startuprunner;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.CommandLineRunner;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;

@Component
@Order(value = -1)
public class StartupRunner2 implements CommandLineRunner {

    private static final Logger logger = LoggerFactory.getLogger(StartupRunner2.class);

    @Override
    public void run(String... args) throws Exception{
        logger.info("服务器启动成功!<<<<使用CommandLineRunner接口");
    }
}


Мы видим, что вывод прошел успешно, и CommandLineRunner выполняется первым в ApplicationRunner.

Четвертое: используйте аннотацию Order для изменения порядка выполнения.

Что, если есть несколько классов реализации, и нам нужно выполнить их в определенном порядке?

Решение: добавьте аннотацию @Order в класс реализации, чтобы указать порядок выполнения.

Примечание. Чем меньше число, тем выше приоритет, т. е. класс с аннотацией @Order(1) будет выполнен раньше класса с аннотацией @Order(2).

адрес проекта

Адрес облака кода:git ee.com/bean также/no SPR…

Адрес гитхаба:GitHub.com/my bean also/no s…

Писать статьи непросто, если это вам поможет, нажмите звездочку

конец

Доработана функция инициализации ресурсов при добавлении проекта, а последующие функции будут обновляться одна за другой.Если у вас возникнут вопросы, пишите мне на mr_beany@163.com. Также попросите руководства у всех великих богов, спасибо всем.