一. 方式一
Springboot设置启动后自动执行指定代码,可以调用这两个接口:
ApplicationRunner
CommandLineRunner
他们的执行时机为容器启动完成的时候,这里使用ApplicationRunner来实现需要的效果,直接上代码:
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
@Component
@Order(1) // 如果有多个类实现了ApplicationRunner接口,可以使用此注解指定执行顺序
public class SysEhcacheInit implements ApplicationRunner {
@Override
public void run(ApplicationArguments args) throws Exception {
System.out.println("SysEhcacheInit执行时启动了~~");
}
}
注意:代码中的@Order代表执行优先级,越小优先级越高 效果如下:
二. 方式二
实现接口:ApplicationListener 监听事件:ApplicationReadyEvent 注意: 方式一的ApplicationRunner和CommandLineRunner在ApplicationReadyEvent之前执行
ApplicationListener<ApplicationReadyEvent>
代码:
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.event.ApplicationReadyEvent;
import org.springframework.context.ApplicationListener;
import org.springframework.stereotype.Component;
@Component
public class ProjectInfo implements ApplicationListener<ApplicationReadyEvent> {
@Override
public void onApplicationEvent(ApplicationReadyEvent event) {
System.out.println("ProjectInfo信息执行了");
}
}
注意,实现了ApplicationListener<ApplicationReadyEvent>接口的类,执行顺序在所有实现了ApplicationRunner接口的后面,如图:
Application事件监听请移步SpringBoot入门二十四,Application事件监听