Spring定时器加载两次问题
在写定时任务前先写了个HelloWorld 来检测一下定时器能否正常运行,结果一检查发现 每次都会执行两次, 在网上查 有人说是因为spring和springmvc 加载了两次 也有人说是因为 Tomcat的配置不正确 我检查了下 我是直接起的dubbo 都没有用到 springmvc和 tomcat 所以肯定还有其他的原因.
我的代码
@Component
public class TimingTaskImpl implements TimingTaskApi {
@Scheduled(cron = "0/5 * * * * ?")//每五秒执行一次
@Override
public void HelloWorld() {
Date a = new Date();
System.out.println(Thread.currentThread().getName()+"----HelloWorld----"+a);
}
}
配置文件:
后来我检查了很久, 看我的log日志检查spring有没有被初始化两遍 ,看了半天也看不出个所以然.后来我就想能不能用线程锁synchronized 把它给锁住 结果也没有用, 然后我用thread.sleep();方法也是什么用都没有 .
后来我把 @component 给删掉 看看 定时任务是否能够正常执行 ,发现 居然 定时器就执行了一次 .
我猜测 原因应该是 spring根据配置文件的
<task:annotation-driven scheduler="scheduler"/>
把 文件给加载了一次 然后 @component 又把文件给加载了一次 最后导致 定时器加载两次 .
所以解决办法就是 去掉 @component .