SpringBoot命令行启动时参数配置

这篇具有很好参考价值的文章主要介绍了SpringBoot命令行启动时参数配置。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

SpringBoot命令行启动时参数配置

一、配置方式

1. 参数配置

通过命令行参数来配置Spring Boot应用程序是一种常见的方式。在命令行中,可以使用--<property>=<value>的形式来传递参数。这些参数会被Spring Boot解析并应用到应用程序的配置中。例如,可以使用以下命令启动Spring Boot应用程序:

java -jar application-name.jar --server.port=8080
2. 配置文件配置

Spring Boot应用程序可以使用默认的配置文件(如application.propertiesapplication.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 这是常规配置文件,包含应用程序的所有默认配置。如果没有其他配置文件指定,这些属性将作为最后的默认值。

三、参数形式

在命令行中,常见的参数可以分为三类:选项参数、非选项参数和系统参数。

  • 选项参数

    Spring Boot应用程序可以在命令行中使用双短横线 -- 作为前缀来传递选项参数。这些参数通常用于配置和控制应用程序的行为。使用选项参数时,参数在命令中是位于 xxx.jar 之后的。例如:

    java -jar application-name.jar --server.port=8080
    
  • 非选项参数

    非选项参数直接跟随在Spring Boot应用程序的 xxx.jar 包后面,它们是应用程序的实际参数。这些参数可以根据应用程序的需要进行解析和处理。例如:

    java -jar application-name.jar arg1 arg2
    
  • 系统参数

    Spring Boot应用程序可以在命令行中使用-D选项设置系统参数,用于配置Java虚拟机(JVM)的行为。这些参数是以-D<property>=<value>的形式传递给JVM,可以在应用程序中通过System.getProperty()方法获取。例如:

    java -Dapp.env=dev -jar your-application.jar
    
/**
 * @Author: isabener
 * @Date: 2023-08-04
 */
@RestController
@RequestMapping("/arg")
public class ArgumentsController {

    @Autowired
    private ApplicationArguments applicationArguments;

    @Value("${server.port}")
    private String serverPort;

    @GetMapping("/getOptionArgs")
    public void getOptionArgs() {
        // 使用ApplicationArguments获取选项参数
        Set<String> optionArgs = applicationArguments.getOptionNames();
        System.out.print("选项参数:");
        optionArgs.forEach(e -> {
            System.out.print(e + applicationArguments.getOptionValues(e) + " ");
        });
        // 使用@value注解获取选项参数
        System.out.println();
        System.out.print("选项参数:" + serverPort);
    }

    @GetMapping("/getNonOptionArgs")
    public void getNonOptionArgs() {
        // 获取非选项参数
        List<String> nonOptionArgs = applicationArguments.getNonOptionArgs();
        System.out.print("非选项参数:");
        nonOptionArgs.forEach(e -> {
            System.out.print(e + " ");
        });
    }

    @GetMapping("/getSystemArgs")
    public void getSystemArgs() {
        // 使用System.get获取系统参数
        String property = System.getProperty("server.port");
        System.out.println("系统参数:" + property);
        // 使用@value获取系统参数
        System.out.println("系统参数:" + serverPort);
    }
}

四、IDEA中参数配置

  • Program arguments(程序参数)

    程序参数是在运行程序时,通过命令行传递给主类的参数,并在应用内进行处理,多个参数需要以空格隔开。例如:

    --arg1=value1 --arg2=value2
    
  • VM options(VM选项)

    VM选项是传递给Java虚拟机(JVM)的参数。JVM选项用于配置JVM的运行时行为,包括堆内存大小、垃圾回收策略等。这些参数通常用于调优和优化Java应用程序的性能。一般以-D 、-X 或者-XX 开头,存在多个参数以空格隔开。例如:

    -Dkey1=value1 -Dkey2=value2
    
  • Environment variables(环境变量)

    环境变量是在操作系统级别设置的一组键值对,在运行程序时可以被应用程序访问。例如:文章来源地址https://www.toymoban.com/news/detail-718156.html

    key1=value1;key2=value2
    

到了这里,关于SpringBoot命令行启动时参数配置的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • springBoot 配置文件 spring.mvc.throw-exception-if-no-handler-found 参数的作用

    在Spring Boot应用中,可以通过配置文件来控制当找不到请求处理器(handler)时是否抛出异常。具体的配置参数是 spring.mvc.throw-exception-if-no-handler-found 。 默认情况下,该参数的值为 false ,即当找不到请求处理器时,Spring MVC会返回404 Not Found响应。如果将该参数设置为 true ,则当

    2024年02月12日
    浏览(29)
  • Spring Boot命令行启动添加参数

    通过java -jar启动springboot的jar项目时,可以动态传递参数来进行配置和开发,比如 可以通过server.port修改项目启动的端口,通过命令行传递的参数具有更高的优先级,会覆盖同名的其他配置参数。 启动Spring Boot项目时传递参数,有三种参数形式: 1、选项参数 选项参数,上面的

    2024年02月10日
    浏览(36)
  • java 启动参数 springboot idea

    在启动application处,选edit Configuration。进入启动配置框。 有VM options(jvm参数),有Program arguments(程序参数)等。 1、VM options  需要以  -D  或  -X  或  -XX  开头,每个参数最好使用空格隔开。 2、program arguments  每个参数需要以 空格隔开 ,否则将会被识别成一个参数。 以

    2024年02月05日
    浏览(25)
  • SpringBoot启动时通过启动参数指定logback的位置

    虽然springboot可以通过简单的配置使用日志系统,但是由于业务往往很复杂,对日志的多样性配置要求比较高,还是习惯于依赖于logback框架本身的配置文件。在spring boot中,使用logback配置的方式常用的有以下几种: 第一种: 将配置文件命名为logback-spring.xml 将配置文件放在项

    2024年02月16日
    浏览(22)
  • springboot如何优雅的获取前端参数

    对于初学者来说,困难的不是理论知识,而是如何在程序中具体实现。 现在的项目基本上都是前后端分离的项目,如何打通前后端,接收前端传过来的参数呢? 废话不多说,这篇文章就来说一说接收前端参数的具体操作 1.1 核心代码 1.2 测试结果 在访问“http://localhost:8080/a

    2024年03月17日
    浏览(29)
  • springboot切面获取参数转为实体对象

    在Spring Boot中使用切面来获取参数并将其转换为实体对象的过程如下所示: 首先,创建一个自定义注解 @ParamToEntity ,该注解可以应用于需要进行参数转换的方法上。 接下来,创建一个切面类 ParameterAspect ,通过AOP技术在目标方法执行前后进行处理。 最后,在需要进行参数转

    2024年01月25日
    浏览(26)
  • 11. SpringBoot项目中参数获取与响应

    SpringBoot项目中参数获取与响应 程序结构: C/S : 客户端/服务器端 -Main方法。 -效果炫目、数据相对安全。 -公司成本高,因为要分别开发客户端和服务器端。 B/S: 浏览器端/服务器端 -效果依赖于浏览器、数据相对不如C/S安全(token令牌模式) -公司成本低,只需要单独开发服

    2024年02月07日
    浏览(22)
  • springboot 项目启动不打印spring 启动日志

    今天项目遇到一个很奇怪的问题,服务在启动时,不打印spring 的启动日志。经过排查发现是因为其他的依赖引入了 log4j 的依赖,因为我们的项目用的是logback,所以项目中没有log4j 的相关配置,所以干扰到了日志的打印 下面是log4j缺失配置文件的告警日志: log4j:WARN No append

    2024年02月11日
    浏览(47)
  • Maven命令启动SpringBoot项目

    用Maven命令启动SpringBoot项目,记录如下: mvn spring-boot:run C:UsersAdministratorsourcereposkd-datacenterserverkd-datacentermvn spring-boot:run  

    2024年02月13日
    浏览(33)
  • spring(15) SpringBoot启动过程

    最好的学习方式就是带着问题学习,在分析 SpringBoot 的启动过程前,先问大家 两个问题: 在启动过程中,SpringBoot 是在哪一步实例化 Bean 的? 答案: 在 SpringApplicatio 的 refresh() 方法刷新上下文的时候实例化的,对应本文的第 16 节。 ApplicationContext 作为一个 IOC 容器,底层是通

    2024年02月12日
    浏览(26)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包