2012-07-11 42 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

相关问题