java spring @Scheduled 注解定时任务没反映不起作用,我之前也配过,就是一模一样配的,就是不执行,输出和断点都没反映。
只不过我以前都写在service层的,所以类上有个@Service,但是我现在单独写一个类,也扫描包了,但是类上也要有个注解让spring扫描到这个类。
原来是这样子,我在类上面加个@Component就可以了,只有加了component,service,repository这种注解,spring才会去管理这个类。
1.首先就是头上要加task
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:task="http://www.springframework.org/schema/task" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.3.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-4.1.xsd">
2.再就是要扫描你那个类所在的包
<context:component-scan base-package="com.task" />
3.然后要扫描定时任务的注解
<!-- 定时任务及线程池 --> <task:executor id="executor" pool-size="5"/> <task:scheduler id="scheduler" pool-size="10"/> <task:annotation-driven executor="executor" scheduler="scheduler"/>
4.最后类上和方法上加注解
@Component @ZcyAutoLog(module="定时任务",tag="DeliveryTimeTask") public class DeliveryTimeTask { @Scheduled(cron = "0/1 * * * * ? ") //每秒执行一次 public void createDeliveryExpireMessage() { System.out.println("哈哈!!!"); } }