我要重写中定义的属性 application.properties
通过cmd与现有其他 application.properties
,但是 @Scheduled
仅允许提供预定义值。
我需要的是通过辩论 @Scheduled
通过中已存在的命令行 application.properties
它将改变中定义的默认值 @Scheduled
.
我的问题是,当我从cmd执行jar文件时,它会获取当前的值 @Scheduled
在建造时。它不会覆盖现有值 @Scheduled
价值观。我想根据用户需要覆盖值。
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条答案
按热度按时间t98cgbkg1#
有几种方法可以做到这一点,但我可以想到的一种方法是使用外部化的应用程序属性文件。看到了吗https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-提供外部配置文件以获取更详细的信息。
你会得到你的
application.properties
(低于src/main/resources
)使用默认属性cronExpression
. 但是当您调用jar时,您可以传入一个系统属性来告诉spring一个额外的属性文件在哪里,并对其进行可能的重写cronExpression
财产。q8l4jmvw2#
请看一下这条线。有很多例子。