spring Scheduled定时任务配置原本感觉很简单,但是配置之后发现不生效,折腾了一小会才找到原因,将具体过程记录如下;
1修改spring-context.xml 在配置文件开头声明task
default-lazy-init=“true”>
Spring公共配置
<context:component-scan base-package=“com.ruisitech.bi.service”>
</context:component-scan>
<task:scheduler id=“Scheduler” pool-size=“10”/>
<task:annotation-driven scheduler=“Scheduler” proxy-target-class=“true”/>
2java代码如下
@Service
@Component
public class CheckHiveDataToCK {
@Autowired
private RhService rhService;
@Scheduled(cron="0 7 * * * ?")
public void checkDau(){
System.out.println("task------");
}
}
但是启动web项目后,发现上面的代码的定时任务并没有执行,奇了怪了,查阅了资料后发现是上面一处不起眼的配置导致的,
default-lazy-init=“true” ,此处配置为懒加载,所以如所有的bean都是懒加载的,导致定时任务所在的bean根本没有实例化,里面的定时任务也没有执行。修改为:
default-lazy-init="false"即可。