6

当社のサービスには、プロパティ ファイルに従ってスケジュールされたプロセスがあり、プロパティrefreshIntervalMillisを読み取ります。その値は、次の構成で Quartz トリガーに直接注入されます。

<bean name="trigger"
    class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean "
    p:repeatInterval="${refreshIntervalMillis}"> 
...
</bean>

ただし、このサービスをインストールする管理者は時間/日で考えているため、作業を容易にするために、これを次のように変更しました。

  1. 名前がrefreshIntervalMillisからrefreshIntervalMinutesに変更されました
  2. 上記のコードを次のように変更します。
p:repeatInterval="#{ 1000 * 60 * T(java.lang.Integer).valueOf(@configurationProperties['garbageLevelWatcher.refreshIntervalMinutes'])}"

注: プロパティ オブジェクトは、「configurationProperties」という名前の Bean として公開されます。

同じことを達成するためのより簡単な構文はありますか?

ありがとう、

4

2 に答える 2

7

"#{T(java.util.concurrent.TimeUnit).MINUTES.toMillis( @configurationProperties['garbageLevelWatcher.refreshIntervalMinutes'])}"

編集:

または...

<context:property-placeholder properties-ref="configurationProperties"
<util:constant id = "MINUTES" static-field="java.util.concurrent.TimeUnit.MINUTES" />

"#{@MINUTES.toMillis(${garbageLevelWatcher.refreshIntervalMinutes})}"
于 2013-03-19T21:47:56.283 に答える
1

プロパティが PropertyPlaceholderConfigurer、@PropertySource、または <context:property-placeholder /> によって検索され、コンテキストがそれを認識している場合

次のように記述できます。

p:repeatInterval="#{ 1000 * 60 * T(java.lang.Integer).valueOf('${garbageLevelWatcher.refreshIntervalMinutes}') }"
于 2013-03-19T21:15:58.197 に答える