定时任务会重复执行俩次的解决方法

情景:在使用SpringMVC的定时任务的注解时,发现本身的定时任务会重复执行俩次。这是为何呢? java

java代码: web

 

spring-mvc.xml配置: spring

这样配置完后,在启动项目后,项目便能按照指定的时间,间隔半小时执行一次。任务是没半小时执行了,可是每次会重复俩次插入操做。这让我有些费解了。我上网搜索了一下相似的状况的前辈们的解决方法,而后才知道缘由。 spring-mvc

 

缘由: mvc

任务在同一时刻执行了俩次,说明这个任务实例化了俩次。我看到网上大多数都是写的缘由都是由于SpringMVC的配置文件,由于在web.xml中也引入了该文件而被实例化了俩次。原文以下:学习

可是我老是以为这个理由不适合个人状况。若是是由于在web中配置而致使实例化了俩次的话,那么其余的用@Component等注解的类,不也会实例化俩次吗?可是我并无发现其重复实例化的现象。那么说明,个人项目程序的配置没有问题。那么是什么缘由致使个人定时任务被实例化了俩次呢?偶然间看到一个微博上写的,若是太多配置写在一个.xml文件中,会致使在扫描的时候,重复实例化。原做者语言以下:(以做往后参考) 测试

偶然间我鼠标放在了配置文件的一个标签component-scan属性上,我恍然大悟: spa

component-scan:扫描标签会自动将拥有@Component注解的类实例化为Bean,而在我定义的任务类上刚好有这么个标签!而在项目中,这个标签早就已经引入使用了,而我再定义了一个,那么就至关于将拥有@Component注释的类实例化了俩次。即便扫描的包不一样,可是先前定义的扫描范围但是整个项目的。这样一来,个人这个任务类至关于被实例化了俩次。那么,直接把这个扫描配置删了,不就成了? .net

 

解决: 3d

我直接将配置文件中我本身定义的那个自动扫描包的配置:

删除,而后测试,果真,任务只执行了一次。到此,问题解决!

 

参考来源:

http://blog.csdn.net/chaijunkun/article/details/6925889

 

总结:

虽然在开发的时候用springMVC用的不少,可是对于spring的种种功能和配置,我仍是很糊涂的。这也说明了我springMVC基础知识的薄弱性。springMVC的学习有待增强啊!

解决此类问题:

1)看配置文件是否有问题:这里的配置文件指的是web.xml和spring-mvc间的配置,是否会致使实例化重复,若是有,就直接修改配置就行;

2)除开1)的情形,即web配置不会致使重复实例化的话,那么就看spring-mvc.xml中的扫描配置是否有重叠的地方,若是有,将重叠的地方去掉就行。

相关文章
相关标签/搜索