版权声明:本文为博主原创文章,转载需注明原文链接及作者。 https://blog.csdn.net/ylforever/article/details/82156965
有很多种场景需要支持服务启动时能预先做一部分逻辑处理。如在服务启动时提前将数据库或者配置文件中的静态数据加载到内存缓存;订阅发布模式中听众向消息中心注册监听的消息等。
C++有全局变量,全局变量在dll加载时初始化,上面这些预处理方法可以在全局对象的构造函数中调用。Java中没有全局变量,SpringBoot提供了一种方案可以在main方法执行后调用自定义的处理逻辑:从ApplicationRunner派生子类实现run方法, 样例代码如下。
package com.elon.springbootdemo.service;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.stereotype.Component;
@Component
public class ClearBuffListener implements ApplicationRunner {
@Override
public void run(ApplicationArguments arg0) throws Exception {
System.out.println("注册订阅消息的听众。");
}
}
上面的run方法在main执行后被调用。