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> |
运行之后就可以自动执行了