当前位置: 首页 > news >正文

springboot启动事件CommandLineRunner使用

什么是CommandRunner

CommandRunner是springboot启动完成时会调用的一个runner 启动参数会传递到这个runner 我们能用来做一些初始化工作和缓存预热等工作

ApplicationRunner VS CommandRunner?

这两个Runner作用一样 只是得到的启动参数格式不一样 前者是一个Argument对象 后者是参数字符串数组 功能更强大

使用方法

编写一个Runner类实现CommandRunner接口 重写run方法 runner被调用时run方法会被执行 Runner类需要注册成一个组件被spring管理

@Component
public class CommandLineRunnerImpl implements CommandLineRunner {
    private static final Logger log = LoggerFactory.getLogger(CommandLineRunnerImpl.class);

    private Environment environment;

    public CommandLineRunnerImpl(Environment environment) {
        this.environment = environment;
    }

    @Override
    public void run(String... args) throws Exception {
        log.info("command line args: {}", Arrays.toString(args)); // [--spring.profiles.active=prod, --server.port=9091]
        log.info("command line environment: {}", environment.getActiveProfiles()); // prod
        log.info("command line environment: {}", environment.getProperty("server.port")); // 9091
    }
}

修改启动的configuration 加入启动参数:
在这里插入图片描述
启动项目后 控制台输出:
在这里插入图片描述
除了从run方法参数获取还可以通过environment对象的getProperty获取

相关文章:

  • RocketMQ 使用手册
  • 排序--快排--挖坑法
  • 电机控制 | 仿真分析:基于脉冲高频注入的永磁同步电机无感控制
  • doris:容灾管理概览
  • es新增运算符
  • 小程序实现瀑布流布局
  • 【MySQL】用户账户、角色、口令、PAM
  • 【miniconda】centos7安装miniconda
  • 【装饰器】【python】【@wraps详解】装饰器核心问题:元数据丢失解决,以及原理
  • 贪心算法经典应用:最优答疑调度策略详解与Python实现
  • ngx_rtmp_flv_module.c — FLV文件处理模块设计与分析
  • JavaScript基础-常用的键盘事件
  • 第三课:Stable Diffusion图生图入门及应用
  • 跨语言微服务架构(Java、Python)——“API中台”
  • SQL小菜之TOP N查找问题
  • 【SUNO】【AI作词】【提示词】
  • 徘徊检测:视觉分析技术的安防新方向
  • ROS2 humble .launch.py启动文件编写
  • QML输入控件: Dial(1)
  • OLED 播放 GIF图片 Adruino
  • 上海静安将发放七轮文旅消费券,住宿券最高满800元减250元
  • 体坛联播|博洛尼亚时隔51年再夺意杯,皇马逆转马洛卡
  • 上海虹桥国际咖啡文化节周五开幕,来看Coffeewalk通关攻略
  • 5吨煤炭“瞬间蒸发”?掺水炭致企业损失千万,腐败窝案曝光
  • 金正恩观摩朝鲜人民军各兵种战术综合训练
  • 我的科学观|梅彦昌:科技创新关键在于能否跑得快,而不是有没有钱