应用启动后执行自定义逻辑操作
@PostConstruct
该注解在方法上使用,对应的方法会在类初始化后调用,需要注意的是,该方法在类初始化时就会被调用,也许这个类被加载的时候应用还在启动,一般配合component注解使用。
@Slf4j
@Component
public class MyListener {
// 应用启动后将nacos信息注册到redis
@PostConstruct
public void initializeRedisServiceInfo(){
log.info("开始注册service信息到redis");
NacosUtil.setServices();
log.info("信息注册结束");
}
}
ApplicationListener接口
通过实现ApplicationListener接口监听ApplicationStartedEvent事件在应用启动完成后执行自定义逻辑操作。
@Component
@Slf4j
public class listen1 implements ApplicationListener<ApplicationStartedEvent>{
@Override
public void onApplicationEvent(ApplicationStartedEvent event) {
log.info("开始注册service信息到redis");
NacosUtil.setServices();
log.info("信息注册结束");
}
}
CommandLineRunner接口
@Component
@Slf4j
public class AfterNacos implements CommandLineRunner {
@Override
public void run(String... args) throws Exception {
log.info("开始注册service信息到redis");
NacosUtil.setServices();
log.info("信息注册结束");
}
}
ApplicationRunner接口
@Component
@Slf4j
public class listen2 implements ApplicationRunner {
@Override
public void run(ApplicationArguments args) throws Exception {
log.info("开始注册service信息到redis");
NacosUtil.setServices();
log.info("信息注册结束");
}
}
@EventListener注解
类似于ApplicationListener,一样是监听事件
@EventListener(ApplicationStartedEvent.class)
public void initializeRedisServiceInfo1(){
log.info("开始注册service信息到redis");
NacosUtil.setServices();
log.info("信息注册结束");
}
执行顺序
@PostConstruct ==》ApplicationListener ==> @EventListener ==> ApplicationRunner ==> CommandLineRunner