本文介绍: 在开发中可能会有这样的情景。需要在容器启动的时候执行一些内容。比如读取配置文件,数据库连接之类的。给我们提供了两个接口来帮助我们实现这种需求。方法,我们只需要实现这个方法即可。目前我在项目中用的是。是系统启动时传入的参数。
优质博文:IT-BLOG-CN
在开发中可能会有这样的情景。需要在容器启动的时候执行一些内容。比如读取配置文件,数据库连接之类的。SpringBoot
给我们提供了两个接口来帮助我们实现这种需求。这两个接口分别为CommandLineRunner
和ApplicationRunner
。他们的执行时机为容器启动完成的时候。
这两个接口中有一个run
方法,我们只需要实现这个方法即可。这两个接口的不同之处在于:ApplicationRunner
中run
方法的参数为ApplicationArguments
,而CommandLineRunner
接口中run
方法的参数为String
数组。目前我在项目中用的是ApplicationRunner
。是这么实现的:args
是系统启动时传入的参数。
package com.zzx.service.start;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.stereotype.Component;
/**
* @ClassName: BootStart
* @Description: 系统入口
* @Author: zzx
* @Date: 2020/9/22 17:26
*/
@Component
public class BootStart implements ApplicationRunner {
private static final Logger logger = LoggerFactory.getLogger(BootStart.class);
@Override
public void run(ApplicationArguments args) {
try {
logger.info("启动系统线程...");
//创建线程池
ThreadFactory threadFactory = Executors.defaultThreadFactory();
ExecutorService executorService = new ThreadPoolExecutor(1,1,0L,
TimeUnit.MILLISECONDS,new LinkedBlockingDeque<Runnable>(),threadFactory);
//(() -> {}) lambda表达式
executorService.execute(() -> {
});
} catch (Exception e) {
logger.error("******初始化系统异常:", e);
}
}
}
原文地址:https://blog.csdn.net/zhengzhaoyang122/article/details/134819258
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_45996.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。