上文已经提到,本文就直接略过,到配置即代码实现了哈
<!--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>
<!--开启定时任务的注解支持--> <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改需求增加...当然,按需拿取,看个人爱好!