需求分析
上文已经提到,本文就直接略过,到配置即代码实现了哈
配置文件
1.pom jar包导入
<!--spring定时器包-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${org.springframework.version}</version>
</dependency>
<!-- 定时调度 -->
<dependency>
<groupId>quartz</groupId>
<artifactId>quartz</artifactId>
<version>1.5.2</version>
</dependency>
2.Spring配置文件
<!--开启定时任务的注解支持-->
<task:annotation-driven />
<!--注解配置-->
<context:annotation-config/>
<bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor"/>
<!--定时任务的具体类或包名,其实就是定位到你执行定时任务所在类的包-->
<context:component-scan base-package="cn.arvin.aisell.booktask"></context:component-scan>
代码实现
1.建立相应的业务类
我这里的话,做了两个,一个是每天晚上十二点定时将用户密码错误次数清零,以便于第二天能够正常登录,二个是每月十五号清空回收站,这里的业务逻辑自己随意定义,只要在上述的包里面,可以任意写实现的方法都可以
@Component
public class BookTask {
/**
* 注入发送邮件的核心对象
*/
@Autowired
private JavaMailSender javaMailSender;
/**
* 注入与共service对象,用于每天定时恢复密码可以访问
*/
@Autowired
private IEmployeeService employeeService;
/**
* 注入回收站service对象用于定时清空回收站
*/
@Autowired
private IEmployee_BackupService employee_backupService;
/**
* 设置定时任务每天零点设置密码错误次数为0
*/
@Scheduled(cron = "0 0 0 * * ?")
public void scheduleTask(){
employeeService.setErrorNum();
}
/**
* 每月15号清空回收站
*/
@Scheduled(cron="0 15 10 15 * ?")
public void myTest(){
employee_backupService.clear();
}
}
2.建立一个启动类,即程序的入口,这个类同样放cn.arvin.aisell.booktask
这个包下面即可
@Component
public class Application {
public static void main(String[] args) {
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
}
}
3.在开启tomcat服务器之后,点击启动改程序即可
结语
对于两种方式而言,有不同的使用场景,如果你的定时任务很少,只有一两个,那么第一种方式肯定更加适合你,因为配置简单方便;那么如果你的定时任务有很多,推荐使用第二种,虽然看起来配置麻烦一点点,会多几行代码,但是你想,如果有很多个类的定时任务,只需要在这个包下main写业务逻辑并加上注解即可,根本不需要配置过多的xml文件,个人推荐第二种,有备无患嘛,万一后来PM改需求增加...当然,按需拿取,看个人爱好!
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。