Всем привет, в этой главе мы добавляем функцию инициализации ресурсов при старте проекта. Если у вас есть какие-либо вопросы, пожалуйста, свяжитесь со мной по адресу 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. Также попросите руководства у всех великих богов, спасибо всем.