需求:程序需要一个检测的机制,需要等到springboot 启动后,里面的bean都初始化完成后,再执行程序。并且需要读取spring的配置文件中的值来控制程序的执行
实现方式:实现ApplicationRunner 接口,将要调用的函数写入到run方法中
spring配置文件中的值可以使用@Value注入,冒号后面为默认值
@Component
public class AfterComponent implements ApplicationRunner {
// 是否启用
private static final String CHECK_EBBUSINESSPARSING_ENABLE = "${weaver.checkEbBusinessParsing.enable}";
// 检查到错误,是否中断启动
private static final String CHECK_EBBUSINESSPARSING_INTERRUPT = "weaver.checkEbBusinessParsing.interrupt";
@Value("${weaver.checkEbBusinessParsing.enable:true}")
private boolean enable;
@Value("${weaver.checkEbBusinessParsing.interrupt:false}")
private boolean interrupt;
@Override
public void run(ApplicationArguments args) throws Exception {
System.out.println("");
if (enable) {
try {
List<String> list = checkEbBusinessIdParsing();
if (list.size() > 0 && interrupt) {
throw new RuntimeException("检查到ebBusinessId解析类没写,终止运行!");
}
} catch (RuntimeException e) {
throw e;
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}
}