JAVA注解@Scheduled 不执行

 

spring boot 项目需要在启动类加上注解 @EnableScheduling

定义一个接口

StockTask.java

1 public interface StockTask {
2     public void task() ;
3 }

定义一个实现类

并继承上面代码

@Component
public class StockTaskImpl implements StockTask {
</span><span style="color: rgba(0, 128, 0, 1)">/**</span><span style="color: rgba(0, 128, 0, 1)">
 * 定时器
 * </span><span style="color: rgba(128, 128, 128, 1)">@throws</span><span style="color: rgba(0, 128, 0, 1)"> IOException
 </span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(0, 0, 0, 1)">
@Scheduled(fixedRate</span>=30000<span style="color: rgba(0, 0, 0, 1)">)
@Override
</span><span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)"> task() {
    System.err.println(</span>"每30s执行一次"<span style="color: rgba(0, 0, 0, 1)">);
}

}

 

 

如果是 Spring 的项目需要配置一下 bean

1
2
3
4
5
6
7
8
9
10
11
12
<beans xmlns:task="http://www.springframework.org/schema/task"
 
xsi:schemaLocation="http://www.springframework.org/schema/task
http://www.springframework.org/schema/task/spring-task-3.0.xsd">
 
       <!--开启这个配置,spring才能识别@Scheduled注解 -->
        <task:annotation-driven scheduler="qbScheduler" mode="proxy"/> 
        <task:scheduler id="qbScheduler" pool-size="10"/>
        <!-- 自动扫描包(也就是自己添加的定时器路径) -->
        <context:component-scan base-package="com.dj.dao,com.dj.service" />
 
</beans>

  运行之后就可以自动执行了