我有两个类似的豆子。它们设置为在ScheduledTimerTask
中调用。
但是一个工作正常,另一个不工作!以下是这两种配置:
<!-- Clear Orders By Sessions -->
<bean id="clearExpiredSessionOrdersTask" class="com.datx.timers.ClearExpiredSessionOrdersTask" autowire="byName">
<property name="period" value="00:02:10"/>
</bean>
<bean id="clearExpiredSessionOrdersTaskInvoker"
class="org.springframework.scheduling.timer.MethodInvokingTimerTaskFactoryBean">
<property name="targetObject" ref="clearExpiredSessionOrdersTask" />
<property name="targetMethod" value="doTask" />
</bean>
<bean id="clearExpiredSessionOrdersTaskTimer" class="org.springframework.scheduling.timer.ScheduledTimerTask">
<property name="timerTask" ref="clearExpiredSessionOrdersTaskInvoker" />
<property name="delay" value="1000" /><!-- In miliseconds -->
<property name="period" value="130000" /><!-- In miliseconds -->
</bean>
<!-- Clear Orders By Sessions -->
这是正在运作的那个。我的班级在第一行是com.datx.timers.ClearExpiredSessionOrdersTask
。
另一个bean设置如下:
<!-- DocumentScheduleTask -->
<bean id="documentSchaduleTask" class="com.datx.timers.DocumentSchaduleTask" autowire="byName" init-method="init">
<property name="period" value="00:02:10"/>
</bean>
<bean id="documentSchaduleTaskInvoker"
class="org.springframework.scheduling.timer.MethodInvokingTimerTaskFactoryBean">
<property name="targetObject" ref ="documentSchaduleTask" />
<property name="targetMethod" value="doTask" />
</bean>
<bean id="documentSchaduleTaskTimer" class="org.springframework.scheduling.timer.ScheduledTimerTask">
<property name="timerTask" ref="documentSchaduleTaskInvoker" />
<property name="delay" value="1000" /><!-- In miliseconds -->
<property name="period" value="130000" /><!-- In miliseconds -->
</bean>
<!-- DocumentScheduleTask -->
你看到了相似之处吗?第一行再次是我的班级。
这是我的DocumentScheduleTask
课程:
public class DocumentSchaduleTask{
private String period;
public init(){
System.out.println("Test");
}
public void doTask(){
//This method is called at a specific time
}
public void setPeriod(String period){
this.period = period;
}
public String getPeriod(){
return this.period;
}
}
其余配置相同。但在第二个中,period
属性没有价值。并且不调用其init
方法。这些暗示是什么?
为什么会造成这种情况?我应该在哪里寻找?你有没有看到任何差异?
答案 0 :(得分:0)
我对这种差异的担忧是第二种配置中的init
方法。 AFAIK init
在属性设置为bean后调用,因此可能init
方法中的代码可能会清除该值。请为DocumentSchaduleTask添加init方法的源代码。
而且,也许,你的错字号 a duler会因为你的名字自动装配而导致一些问题。