spring boot 读取项目参数配置

一、简介

spring boot项目启动时可以配置一些参数,我们可以通过实现ApplicationRunner或CommandLineRunner接口方法,并重新runrun来获取这些,如果项目内定义了几个类实现了两个类的话,通过@Order注解来指定他们的执行顺序。

spring boot项目可以在启动的时候指定项目运行参数,例如:java -jar --user=wenyl

2、ApplicationRunner

2.1、源码解析

ApplicationRunner的run方法是ApplicationArguments,内部常用参数是五个方法

public interface ApplicationArguments {
	String[] getSourceArgs();
	Set<String> getOptionNames();
	boolean containsOption(String name);
	List<String> getOptionValues(String name);
	List<String> getNonOptionArgs();
}

我们添加启动参数如下

图片.png

getSourceArgs()以空格为礼物,获取所有配置,并且以字符串形式返回

图片.png

getOptionNames()方法用于获取配置项(配置项以--开头)的名称,该方法返回的值是集合,对应一个配置项的值,可能是一组,需要单独定义但名称相同

图片.png

getOptionValues()方法用于获取配置项的值,返回的是一个数组,意味着我们可以给同一个配置项定义不同的值,如我们添加的名称属性,定义了两个值

图片.png

getNonOptionArgs()方法用于获取配置费项参数,在测试用的配置中,你好参数是没有-前缀的获取到的也只有它

图片.png

2.2、案例

@Component
public class MessageApplicationRunner1 implements ApplicationRunner {


    @Override
    public void run(ApplicationArguments args) throws Exception {
        System.out.println("开始加载");
        List<String> nonOptionArgs = args.getNonOptionArgs();
        Set<String> optionNames = args.getOptionNames();
        for(String optionName:optionNames){
            System.out.println("参数-"+optionName+"   值:"+ args.getOptionValues(optionName));
        }
        String[] sourceArgs = args.getSourceArgs();
        System.out.println("结束加载");
    }
}

 扫VX 领Java资料,前端,测试,python等等资料都有

3、CommandLineRunner

CommandLineRunner没有ApplicationRunner一个操作,只是以空格为路由,截取配置,2.1中同样的配置,获取情况如下

图片.png

@Component
public class MessageApplicationRunner implements CommandLineRunner {
    @Override
    public void run(String... args) throws Exception {
        System.out.println(args);
    }
}

4、ApplicationRunner和CommandLineRunner的区别

ApplicationRunner 的运行方法的参数是ApplicationArguments,而CommandLineRunner 的运行方法的参数是String 类型

图片.png

图片.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值