04 第十二天--0基础自学java-super(实参)时的内存图分析

博客提到继承父类的一些特有基因,这些基因通常不能读写,但可通过super(实参)来进行读写操作,涉及面向对象编程中继承相关知识。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
就是继承了父类的一些特有基因,这些基因一般不能读写,但是能通过super(实参)来读写

<think>嗯,用户想知道如何在通过java -jar启动Spring Boot项目传递实际参数。我需要先回想一下Spring Boot的启动参数处理机制。记得有两种方式:一种是通过命令行参数,另一种是通过系统属性或者环境变量。 首先,命令行参数是直接在java -jar命令后面添加的参数,比如--server.port=8081这样的形式。这些参数会被Spring Boot自动捕获,并应用到对应的配置属性上。不过要注意的是,命令行参数需要以双横线开头,否则会被识别为JVM参数,导致应用无法正确接收。 然后,用户可能还需要传递JVM参数,比如-Xmx1024m这样的内存设置。这候需要把JVM参数放在-jar之前,用空格分隔。比如java -Xmx1024m -jar app.jar --server.port=8081。这里要确保JVM参数和应用程序参数的位置正确,否则可能引发错误。 另外,用户提到的实际参数可能包括环境变量。可以通过在命令前设置环境变量,比如JAVA_OPTS或者SPRING_APPLICATION_JSON。例如,SPRING_APPLICATION_JSON='{"server":{"port":9090}}' java -jar app.jar。这种方式适合传递复杂的配置结构,或者当参数较多更方便管理。 还需要提醒用户注意参数的优先级。Spring Boot的配置源优先级中,命令行参数的优先级比较高,会覆盖配置文件中的设置。比如在application.properties里设置了server.port=8080,但命令行传递了--server.port=8081,最终会使用8081端口。 可能用户会遇到的问题包括参数格式错误,比如忘记加双横线,或者JVM参数和应用程序参数的位置颠倒。这候应用可能无法启动,或者参数不生效。需要检查命令的格式是否正确,并且确认参数是否被正确解析。 此外,用户可能想了解如何验证参数是否生效。可以建议他们在应用中添加日志输出,或者在启动后检查对应的配置属性。例如,在Controller中注入server.port的值,查看实际使用的端口号。 最后,用户可能有进一步的需求,比如如何管理多环境配置,或者如何结合外部配置文件使用。这候可以建议他们使用profile-specific的配置文件,或者通过--spring.config.location参数指定外部配置文件的位置。 总结一下,回答需要分步骤说明不同的参数传递方式,强调正确的语法格式和优先级,同指出常见错误和验证方法。这样用户就能清晰了解如何在实际操作中传递启动参数了。</think>### 通过 `java -jar` 启动 Spring Boot 项目传递参数的方法 #### 1. **命令行参数传递** 在 `java -jar` 命令后直接添加参数,格式为 `--参数名=值`,例如: ```bash java -jar 工程名.jar --server.port=8081 --spring.datasource.url=jdbc:mysql://localhost:3306/db ``` - **注意事项**: - 参数必须以 `--` 开头,否则会被识别为 JVM 参数而非 Spring Boot 参数[^1]。 - 参数优先级高于 `application.properties` 中的配置[^1]。 #### 2. **通过系统属性传递** 使用 `-D` 标志传递 JVM 系统属性,例如设置日志路径: ```bash java -Dlogging.file=/var/log/app.log -jar 工程名.jar ``` - 系统属性可通过 `@Value("${属性名}")` 在代码中注入。 #### 3. **环境变量传递** 通过环境变量传递参数(需遵循 Spring Boot 的命名规则): ```bash export SPRING_DATASOURCE_URL=jdbc:mysql://localhost:3306/db java -jar 工程名.jar ``` - 环境变量名需转换为大写并用下划线分隔(如 `spring.datasource.url` → `SPRING_DATASOURCE_URL`)。 #### 4. **组合使用示例** ```bash java -Xmx512m -Dspring.profiles.active=prod -jar 工程名.jar --server.port=8081 ``` - `-Xmx512m` 为 JVM 内存参数,需放在 `-jar` 之前[^2]。 - `-D` 定义的 JVM 系统属性需在 `-jar` 之前。 - `--server.port` 为 Spring Boot 应用参数,需在 `-jar` 之后。 #### 5. **参数优先级** Spring Boot 参数加载优先级(从高到低): 1. 命令行参数(`--参数名=值`) 2. JVM 系统属性(`-D参数名=值`) 3. 环境变量 4. `application.properties` 或 `application.yml` #### 6. **参数验证** 在代码中通过 `@Value` 注入参数并打印验证: ```java @RestController public class ConfigController { @Value("${server.port}") private String port; @GetMapping("/config") public String getConfig() { return "当前端口:" + port; } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值