tomcat启动,但是spring配置的bean并没有初始化

来源:互联网 发布:巴伐利亚级战列舰知乎 编辑:程序博客网 时间:2024/05/18 00:51

今天在做一个spring配置定时器的任务时,发现定时器并没有启动。

但是所有的定时器spring的配置代码是毫无错误的:
 <bean id="timerBeanId" class="timerBean">        
      </bean>
      
      <bean id="scheduleReportTask" class="org.springframework.scheduling.timer.ScheduledTimerTask">
      <property name="timerTask" ref="timerBeanId" />
      <property name="period">
      <value>10000</value>
      </property>
      </bean> 
   
      <bean class="org.springframework.scheduling.timer.TimerFactoryBean">
<property name="scheduledTimerTasks">
<list>
<ref bean="scheduleReportTask"/>
</list>
</property>
      </bean>

因为同样的配置我放到了其他项目里面可以运行调通。那问题就不是定时器配置的问题了,问题在于项目框架本身。

问题解决流程:

1.我以debugger模式启动服务(部署到tomcat中),在定时器run()方法上加上断点,没有执行

2.通过上一步说明定时器没有一执行的timertask中,接着在timertask类中添加无参构造,并打印信息。因为timerTask是通过spring配置文件进行初始化的,我要看看是否在服务启动的时候bean进行了初始化,结果还是没有执行。

3.通过上一步说明spring并没有初始化相应的bean类,为了证实这个结果,我在其他的bean的无参构造函数中同样加打印信息,结果还是没有打印出结果。

4.问题渐渐明朗起来,就是在服务启动的时候没有启动spring。最后发现web.xml中没有配置spring的启动Listener

  <listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>


加上此listener后服务启动,spring初始化bean然后定时器执行

0 0
原创粉丝点击