springboot获取启动参数

本文介绍如何在IDEA中通过实现ApplicationListener接口并重写onApplicationEvent方法来读取启动参数。此外还介绍了另一种方法,即使用System.getProperty()来获取启动参数。

就用idea演示了

先添加启动参数
在这里插入图片描述
读取:
启动类实现ApplicationListener,重写onApplicationEvent
在这里插入图片描述
这不就拿到了嘛
在这里插入图片描述
还可以获取应用上下文,拿到端口啥的,就不演示了,如果只是想获取启动参数的话,还可以System.getProperty()

在Spring Boot项目中,如果遇到启动参数`args`为空的情况,可能是因为未正确传递命令行参数或者程序运行环境未能识别这些参数。以下是针对该问题的分析与解决方案: ### 1. 命令行参数传递方式 当通过命令行启动Spring Boot应用程序时,可以通过以下方式向`main`方法中的`args`传入参数: ```bash java -jar your-spring-boot-app.jar --arg1=value1 --arg2=value2 ``` 上述命令会将`--arg1=value1`和`--arg2=value2`作为参数传递给`args`数组[^1]。 ### 2. 使用`@Value`注入参数 为了访问传递的参数,在Spring Bean类中可以使用`@Value`注解来获取特定属性值。例如: ```java @Component public class MyComponent { @Value("${arg1}") private String arg1; public void displayArg() { System.out.println("Argument Value: " + arg1); } } ``` 需要注意的是,只有以`--key=value`形式传递的参数才会被自动映射到Spring环境中并可通过`@Value`读取[^2]。 ### 3. 配置文件覆盖默认行为 如果希望某些参数能够从外部配置文件(如application.properties或application.yml)加载,则可以在Nacos或其他配置中心定义相应的键值对,并让其优先级高于内置配置。这样即使`args`为空也不会影响正常功能实现。 ### 4. 测试代码验证 下面是一个简单的测试案例用于确认参数是否成功接收: ```java @SpringBootApplication @EnableDiscoveryClient public class NacosClientApplication { public static void main(String[] args) { ConfigurableApplicationContext context = SpringApplication.run(NacosClientApplication.class, args); // 手动打印所有接收到的参数 Map<String, Object> params = context.getEnvironment().getPropertySources() .stream() .filter(ps -> ps.containsProperty("arg1")) .collect(Collectors.toMap(PropertySource::getName, PropertySource::getSource)); System.out.println(params.toString()); } } ``` 此段代码展示了如何遍历所有的property sources查找指定名称(`arg1`)对应的value是否存在以及它的具体数值是什么样式的输出结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值