往往我们会遇到这样的需求在项目启动后,通过查询数据库或者远程服务调用来初始化一些配置信息,这个时候我们可以使用ApplicationRunner 来完成。通过自定义实现类重写 run方法来进行配置信息的初始化。
@Component: 用于托管该类 @Order启动顺序当有多个类时按顺序启动,value值越小优先级越高。 @Component @Order(value = 100) public class AppStartupRunner implements ApplicationRunner { private static final Logger logger = LoggerFactory.getLogger(AppStartupRunner.class); @Override public void run(ApplicationArguments args) throws MarkingException { try { logger.info("初始化配置项开始..."); // 1. 初始化学校本地化配置项 schoolLoaclInitProperties(); // 2. 其他 logger.info("初始化配置项完成..."); } catch (Exception e) { logger.error("初始化配置项异常:{}", e); throw new MarkingException(500, "初始化配置项异常"); } } /** * 初始化学校本地化配置项 * 每天晚上0点同步最新配置信息 */ @Scheduled(cron = "0 0 0 * * ?" ) private void schoolLoaclInitProperties () { Integer key = null; Map<String, String> properties = null; // @TODO 查询配置项并遍历初始化 // 1. 查询配置 学校id : 配置Map properties = new HashMap<>(16); SchoolProperties.initProperties(key, properties); } }