当前位置: 首页 > 知识库问答 >
问题:

覆盖默认的Spring Boot应用程序。应用程序的属性。通过cmd动态创建属性

司知
2023-03-14

我想覆盖应用程序中定义的属性。属性通过cmd与应用程序中现有的其他属性。属性,但仅允许提供预定义值。

我需要的是通过应用程序中已经存在的命令行传递调度的参数。属性,它将更改在调度中定义的默认值。

我的问题是,当我从cmd执行jar文件时,它正在获取构建时存在于@计划中的值。它没有覆盖现有值@计划值。我想根据用户需要覆盖值。

Spring代码

@SpringBootApplication
@EnableScheduling
public class PSchedularApplication {

    public static void main(String[] args) {
        for(String s : args)
            System.out.println("arguments passed=>"+s);
        SpringApplication application = new SpringApplication(PSchedularApplication .class);
        if(!(args).equals(null))
        {
            application.setAddCommandLineProperties(true);
        }
        application.run(args);
    }
}

@Component  
public class TaskSchedular {
@Scheduled(cron="${cronExpression}")
    public void taskScheduling()
    {
        System.out.println("Welcome to task schedular " + new java.util.Date());
        moveFile();
    }
}

应用属性

cronExpression=0 0/1 * * * *
pzsc.poll.cron.weekly=0 0/2 * * * *
pzsc.poll.cron.daily=0/30 * * * * *

在cmd中

java -jar PSchedular-0.0.1-SNAPSHOT.jar --cron=cronExpression

共有2个答案

越胤
2023-03-14
java -jar -Dserver.port=9999   your_jar_file.jar

请看一下这条线。有很多例子。

狄英哲
2023-03-14

有几种方法可以做到这一点,但我可以想到的一种方法是使用外部化的应用程序属性文件。看见https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-提供外部配置文件以了解更多详细信息。

您将拥有您的应用程序。属性(在src/main/resources下),带有默认属性cronExpression。但是当您调用JAR时,您可以传入一个系统属性来告诉Spring一个额外的属性文件在哪里,并可能覆盖该属性。

java -jar <jar_name> -Dspring.config.additional-location=my-other-file.properties
 类似资料:
  • 在我的默认SpringBoot应用程序中,它具有依赖项,调用(带有)返回以下信息 但是,我的机器上有两个驱动器,所以我想查看它们的磁盘空间详细信息。所以我添加了一个配置文件: 现在,我的健康endpoint返回以下数据 (稍后我将考虑如何抑制默认的“diskSpace”条目) 然而,由于我可能想在不同的机器上运行我的应用程序,我想配置磁盘驱动器,以便在我的文件。 还加上 配置在启动期间加载并记录到

  • 我正在使用springfox swagger 2.8.0。我想根据我的需求定制我的Swagger文档和API版本路径。能够使用应用程序修改版本路径。属性,并且它正在正常运行: 斯普林福克斯。文档大摇大摆路径=/v2/可用性服务 http://localhost:8080/context-path/v2/availability-service 但是想要我的留档URL如下,如何使用applicati

  • 我想开发一个API,使非程序员能够设置电子邮件属性,例如端口或主机。我发现我可以使用Spring Boot注释@ConfigurationProperties在类中加载属性。 我可以使用getPort检索属性,并使用setPort进行设置。 但是,使用此方法可以计算应用程序中的实际值。使用setPort或setHost时,属性文件不会更改。因此,当我重新启动应用程序时,更改会丢失。是否有办法实际更

  • 我正在尝试在外部tomcat上运行camel应用程序。有2个应用程序。属性文件存在于我的项目中,一个在src/main/resources下,另一个在src/test/resources下。当我使用maven install命令创建war文件时,它使用应用程序。来自src/main/resources的属性文件(这是必需的),但当我在eclipse中使用tomcat启动应用程序时,它正在使用app

  • 我在src/main/resources下创建了2个文件: 应用程序。属性 第一个具有从env变量中获取值的属性,而后者具有固定值。 根据这里的具体情况,我以这样的方式推出了Spring靴: 然而,不会产生任何影响,并且应用程序是局部的。属性似乎被忽略。 有什么提示吗?

  • 我正在将一个非常基本的web应用程序部署到Google应用程序引擎。我使用的是Springboot,我可以在本地很好地运行应用程序,但当我部署到Google时,应用程序引擎不会启动实例。我在启动时配置了一个云SQL数据源。 我有云sql配置属性配置src/main/Resources/application.properties.App Engine似乎找不到这些属性,所以它无法正确设置Cloud