以编程方式设置bean的属性

时间:2012-07-11 00:25:53

标签: spring javabeans

我试图找出如何调整“destroyWorldTask”bean的“period”属性,该bean在我的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 个答案:

答案 0 :(得分:1)

有两种可能的答案:

1.如果要在程序中的某处设置“period”属性,则无需在上下文配置中进行设置。 (我认为不适合你,因为你使用的是弹簧级,而不是你的。)
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>