今天小编给大家分享一下以单个数字开头的Java字符串属性值被截断怎么解决的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。
当尝试使用环境变量参数化 Spring 任务的 CRON 计划时,我遇到了一个问题,即未从属性接收完整计划,而仅在第一个值为数字的情况下。搜索谷歌给了我零个我的问题类型的例子,所以我是靠自己的。
我找到的解决方案涉及为计划的每个部分使用单独的环境变量。
附加的基于 Maven 的项目是一个简单的项目,其中 Spring 任务会将当前时间打印到控制台。我使用 Intellij 的 IDEA,但您应该能够将其调整到 Eclipse 或您喜欢的任何其他 IDE。
任务类是:
public class ScheduledTasks {
private static final Logger log = LoggerFactory.getLogger(ScheduledTasks.class);
private static final SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");
@Scheduled(cron ="${cron.schedule}")
public void reportCurrentTime() {
log.info("The time is now {}", dateFormat.format(new Date()));
}
}
在我的 中application.properties
,我最初从单个环境变量设置时间表:
cron.schedule = ${test_cron}
如果我使用*/5 * * * * ?
环境变量“ test_cron
”中设置的“ ”(每 5 秒)的CRON 计划运行此程序,我会得到预期的结果:
2021-04-29 12:17:50.437 INFO 22420 --- [ main] o.s.s.c.ThreadPoolTaskScheduler
: Initializing ExecutorService 'taskScheduler'
2021-04-29 12:17:50.480 INFO 22420 --- [ main] c.e.s.SchedulingTasksApplication
: Started SchedulingTasksApplication in 2.441 seconds (JVM running for 3.931)
2021-04-29 12:17:55.008 INFO 22420 --- [ scheduling-1] c.e.schedulingtasks.ScheduledTasks
: The time is now 12:17:55
2021-04-29 12:18:00.014 INFO 22420 --- [ scheduling-1] c.e.schedulingtasks.ScheduledTasks
: The time is now 12:18:00
2021-04-29 12:18:05.005 INFO 22420 --- [ scheduling-1] c.e.schedulingtasks.ScheduledTasks
: The time is now 12:18:05
但是,如果我以“ 0 25 * * * ?”
(在过去 25 分钟)的时间表运行它,我会收到错误消息,指出我的时间表无效并且其中只有零:
Encountered invalid @Scheduled method 'reportCurrentTime': For input string: ""0"
为了解决这个问题,我更改了应用程序属性,以便在Environment
每个计划部分使用一个变量,中间有一个空格:
cron.schedule = ${cron_sec} ${cron_min} ${cron_hr} ${cron_day} ${cron_mth} ${cron_wk}
并在每个环境变量设置为所需值的情况下运行它。类似于上面失败的例子:
cron_sec=0
cron_min=30
cron_hr=*
cron_day=*
cron_mth=*
cron_wk=*
我得到了预期的输出:
2021-04-29 12:29:25.539 INFO 22896 --- [ main] c.e.s.SchedulingTasksApplication
: Started SchedulingTasksApplication in 3.677 seconds (JVM running for 5.441)
2021-04-29 12:30:00.003 INFO 22896 --- [ scheduling-1] c.e.schedulingtasks.ScheduledTasks
以上就是“以单个数字开头的Java字符串属性值被截断怎么解决”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。