2012-07-11 41 views
0

我想弄清楚如何調整在我的bean列表中定義的「destroyWorldTask」bean的「period」屬性。這可能嗎?什麼是正確的方法來做到這一點?以編程方式設置bean的屬性

<bean id="mytimerfactory" 
    class="org.springframework.scheduling.timer.TimerFactoryBean"> 
    <property name="daemon" value="true"/> 
    <property name="myTimerTasks"> 
     <list> 
      <bean class="org.springframework.scheduling.timer.ScheduledTimerTask" id="destroyWorldTask"> 
       <property name="delay" value="100"/> 
       <property name="period" value="10000/> 
       <property name="runnable"> 
        <bean class="com.scene7.is.util.SafeRunnable"> 
         <constructor-arg ref="destroyWorld"/> 
        </bean> 
       </property> 
      </bean> 
     </list> 
    </property> 
</bean> 

感謝

回答

1

有兩個可能的答案:

1.如果你想要的「期間」屬性設置程序中某個位置,你不需要在上下文配置設置。 (我認爲這不適合你,因爲你使用的是春季課,而不是你的)。

2. org.springframework.scheduling.timer.ScheduledTimerTask擴展,使您的類的版本,是這樣的:

public MyTimeScheduledTimerTast extends ScheduledTimerTask{ 
    //... 
} 

,並設置你的程序屬性。 (現在是在你的手)
然後更新您的上下文的配置是這樣的:

<bean id="mytimerfactory" class="org.springframework.scheduling.timer.TimerFactoryBean"> 
<property name="daemon" value="true"/> 
<property name="myTimerTasks"> 
    <list> 
     <bean class="myPackage.MyScheduledTimerTask" id="destroyWorldTask"> 
       <!-- Set those properties that are not set in your program --> 
     </bean> 
    </list> 
</property> 
</bean> 
+0

但是,不要我需要以某種方式抓住MyTimeScheduledTimerTask的bean實例,然後調用其setPeriod? – Brian 2012-07-11 20:02:51

+0

由於您從Spring scheduledTimerTask繼承了您的類,因此您可以根據需要添加儘可能多的屬性,其中一個屬性可以是您想要的屬性。你可以通過在你的程序中實例化一個bean並在你的程序中設置它並做你想做的事。 – 2012-07-14 10:58:10

相關問題