您的位置:首页 > 编程语言 > Java开发

Spring的定时器出现执行两次的问题剖析及解决

2018-03-19 18:45 246 查看
解决在用Spring的定时器是出现的执行方法调用两次(实例被构造两次)的问题

今天在优化一个已经上线的项目上要实现一个定时器,其主要作用时为了定时删除一些文件、图片及视频,可是按正常的在web.xml、applicationContext.xml中配置相应的配置完成后启动Tomcat,然后在测试的时候居然我的定时器任务方法执行了两次。
问题所在:配置文件web.xml的配置
<servlet>
<servlet-name>mvc-dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
<async-supported>true</async-supported>
</servlet>

<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>SpringMVC中再web.xml中有上面两行代码片,我的定时器配置在applicationContext.xml,在项目启动的时候扫描了两遍配置文件,也就是两个容器中都拿到了定时器。
解决方法:单独把定时器配置在一个新创建的文件spring-timer.xml里面,然后就可以了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: