温馨提示:这篇文章已超过463天没有更新,请注意相关的内容是否还可用!
SpringBoot命令行启动时参数配置是用于自定义应用程序行为的便捷方式。通过命令行参数,开发者可以在启动SpringBoot应用时动态地调整配置属性,如设置服务器端口、配置数据源等。这种配置方式灵活便捷,无需修改代码重新编译,只需在命令行中输入相应的参数即可。SpringBoot会自动读取这些参数并应用到应用程序的配置中,从而实现对应用的快速部署和调整。
一、配置方式
1、参数配置
通过命令行参数来配置Spring Boot应用程序是一种便捷的方式,在命令行中,可以使用的形式来传递参数,这些参数会被Spring Boot解析并应用到应用程序的配置中。
java -jar application-name.jar --server.port=8080
2、配置文件配置
Spring Boot应用程序可以使用默认的配置文件(如application.properties
或application.yml
),也可以通过自定义的配置文件进行配置,默认的配置文件位于类路径的根目录下,而自定义的配置文件可以通过--spring.config.location
命令行参数指定。
java -jar application-name.jar --spring.config.location=classpath:/application-config.yml
通过参数配置和配置文件配置,可以在运行Spring Boot应用程序时动态地改变应用程序的行为,而无需重新打包应用程序,这使得在不同环境下部署和运行应用程序更加灵活和便捷。
二、配置顺序(由高到低)
1、命令行参数
命令行参数具有最高优先级,可以覆盖配置文件中的属性。--server.port=8080
将会覆盖application.properties
或其他配置文件中的server.port
属性。
2、操作系统环境变量
Spring Boot会加载操作系统环境变量中以SPRING_
为前缀的所有属性。SPRING_PROFILES_ACTIVE=dev
将会设置spring.profiles.active
属性。
3、自定义配置文件
可以通过--spring.config.location
命令行参数指定自定义的配置文件,这些自定义配置文件可以覆盖默认的配置文件中的属性。
4、应用配置文件
application.properties
或application.yml
是常规配置文件,包含应用程序的所有默认配置,如果没有其他配置文件指定,这些属性将作为最后的默认值。
三、参数形式
在命令行中,常见的参数可以分为三类:选项参数、非选项参数和系统参数。
1、选项参数
Spring Boot应用程序可以在命令行中使用双短横线 作为前缀来传递选项参数,这些参数通常用于配置和控制应用程序的行为,例如上面提到的
--server.port=8080
。
2、非选项参数
非选项参数直接跟随在Spring Boot应用程序的xxx.jar
包后面,它们是应用程序的实际参数,这些参数可以根据应用程序的需要进行解析和处理。
java -jar application-name.jar arg1 arg2
。
3、系统参数
Spring Boot应用程序可以在命令行中使用-D
选项设置系统参数,用于配置Java虚拟机(JVM)的行为,这些参数以-D=
的形式传递给JVM,可以在应用程序中通过System.getProperty()
方法获取。
java -Dapp.env=dev -jar your-application.jar
。
以下是一个简单的控制器示例,展示如何在Spring Boot应用程序中获取和使用这些参数:
四、IDEA中参数配置
1、Program arguments(程序参数)
程序参数是在运行程序时,通过命令行传递给主类的参数,并在应用内进行处理,多个参数需要以空格隔开。
--arg1=value1 --arg2=value2
。
2、VM options(VM选项)
VM选项是传递给Java虚拟机(JVM)的参数,这些参数用于配置JVM的运行时行为,包括堆内存大小、垃圾回收策略等。
-Dkey1=value1 -Dkey2=value2
。
3、Environment variables(环境变量)
环境变量是在操作系统级别设置的一组键值对,在运行程序时可以被应用程序访问。
设置环境变量key1=value1
和key2=value2
。
在Spring Boot应用中,你也可以通过@Value("${环境变量名}")
注解来直接获取环境变量的值,例如@Value("${key1}") private String keyValue;
。 需要注意的是,环境变量的命名规范通常全部大写,以区分普通配置属性。
还没有评论,来说两句吧...