1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > Java计划任务(任务调度) 定时器 定时安排任务 如定时发送Excel表格到用户邮箱(quar

Java计划任务(任务调度) 定时器 定时安排任务 如定时发送Excel表格到用户邮箱(quar

时间:2018-07-31 07:47:15

相关推荐

Java计划任务(任务调度) 定时器 定时安排任务 如定时发送Excel表格到用户邮箱(quar

文章中使用到的发送邮件代码就不写了,之前发布过--/yan95520/article/details/89366606

1.在pom.xml中导入jar包(maven工程)

<!-- 计划任务支持 -->

<dependency>

<groupId>org.quartz-scheduler</groupId>

<artifactId>quartz</artifactId>

<version>2.2.1</version>

<exclusions>

<exclusion>

<groupId>c3p0</groupId>

<artifactId>c3p0</artifactId>

</exclusion>

</exclusions>

</dependency>

<!-- Excel支持 -->

<dependency>

<groupId>org.apache.poi</groupId>

<artifactId>poi</artifactId>

<version>3.13</version>

</dependency>

<dependency>

<groupId>org.apache.poi</groupId>

<artifactId>poi-ooxml</artifactId>

<version>3.13</version>

</dependency>

2.编写工作类,用于完成计划任务的行为事件,如发文件邮件清数据等(包含制作Excel表格)

@Component("myjob")

public classMyJob {

@Autowired

privateEmailUtilemailUtil;

public voidclearMemberTickct() {

System.out.println("清空程序运行");

//调用清空数据的方法

System.out.println("清空"+ 3 +"条数据");

}

public voidsendMemberReport() {

System.out.println("文本邮件程序运行");

//调用查询最近登录信息

emailUtil.sendEmail("huangwenhao.567@","每日会员报表","会员最近登录信息");

}

public voidsendExcel()throwsIOException {

System.out.println("表格邮件程序运行");

List<Member> list = service.findAll();

HSSFWorkbook wk =newHSSFWorkbook();//生成excel文件

HSSFSheet sheet = wk.createSheet("会员");//创建表

sheet.createRow(2).createCell(3).setCellValue("会员信息报表");//创建行2同时创建列3并给列3赋值

HSSFRow titleRow = sheet.createRow(3);//创建行3

titleRow.createCell(2).setCellValue("会员ID");//创建列2同时赋值

titleRow.createCell(3).setCellValue("会员名称");//创建列3同时赋值

titleRow.createCell(4).setCellValue("最近登录时间");//创建列4同时赋值

intn = 4;

for(Member m : list) {

HSSFRow dataRow = sheet.createRow(n);

dataRow.createCell(2).setCellValue(m.getId());

dataRow.createCell(3).setCellValue(m.getNickName());

dataRow.createCell(4).setCellValue(m.getUuidCreateTime() ==null?"": m.getUuidCreateTime().toString());

n++;

}

OutputStream os =newFileOutputStream("D:/report.xls");// 创建输出流 report.xls文件

wk.write(os);//将刚刚生成的excel文件的数据写入report.xls文件

os.close();//清空缓冲区

//发送Excel表格到指定会员邮箱中

emailUtil.sendEmail("huangwenhao.567@","每日会员报表","请查看每日报表",newString[]{"D:/report.xls"});

}

}

3.使用配置文件控制计划任务(applicationContext-task.xml)

<?xml version="1.0"encoding="UTF-8"?>

<beansxmlns:xsi="/2001/XMLSchema-instance"

xmlns="/schema/beans"

xmlns:aop="/schema/aop"

xmlns:context="/schema/context"

xmlns:tx="/schema/tx"

xmlns:cache="/schema/cache"

xmlns:p="/schema/p"

xsi:schemaLocation="/schema/beans

/schema/beans/spring-beans-4.0.xsd

/schema/aop

/schema/aop/spring-aop-4.0.xsd

/schema/context

/schema/context/spring-context-4.0.xsd

/schema/tx

/schema/tx/spring-tx-4.0.xsd

/schema/cache

/schema/cache/spring-cache-4.0.xsd">

<!--完成动作的类 可用注解-->

<!--<bean id="myjob" class="com.it.service.quartz.MyJob"/>-->

<!-- 控制行为,清除数据 -->

<beanid="clearuuid"

class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">

<propertyname="targetObject">

<refbean="myjob"/><!--完成动作的类-->

</property>

<propertyname="targetMethod"value="clearMemberTickct"/><!--类中的方法名-->

<propertyname="concurrent"value="false"/><!-- 作业不并发调度 -->

</bean>

<!-- org.springframework.scheduling.quartz.CronTriggerBean -->

<!-- 控制时间,每天0点 -->

<beanid="clear_ticket"

class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">

<propertyname="jobDetail"ref="clearuuid"/><!-- 上面的bean类 -->

<propertyname="cronExpression"value="0 11 11 * * ? *"/><!-- 从第几秒开始每隔几秒执行 -->

</bean>

<!-- 控制行为,发送文本邮件 -->

<beanid="send_email"

class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">

<propertyname="targetObject">

<refbean="myjob"/>

</property>

<propertyname="targetMethod"value="sendMemberReport"/>

<propertyname="concurrent"value="false"/><!-- 作业不并发调度 -->

</bean>

<!-- org.springframework.scheduling.quartz.CronTriggerBean -->

<!-- 控制时间,每天0点 -->

<beanid="sendMemberReport"

class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">

<propertyname="jobDetail"ref="send_email"/><!-- 类 -->

<propertyname="cronExpression"value="20/10 * * * * ?"/><!-- 从第几秒开始每隔几秒执行 -->

</bean>

<!-- 控制行为,发送Excel表格邮件 -->

<beanid="send_email2"

class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">

<propertyname="targetObject">

<refbean="myjob"/>

</property>

<propertyname="targetMethod"value="sendExcel"/>

<propertyname="concurrent"value="false"/><!-- 作业不并发调度 -->

</bean>

<!-- org.springframework.scheduling.quartz.CronTriggerBean -->

<!-- 控制时间,每天0点 -->

<beanid="sendMemeberExcel"

class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">

<propertyname="jobDetail"ref="send_email2"/><!-- 类 -->

<propertyname="cronExpression"value="20/10 * * * * ?"/><!-- 从第几秒开始每隔几秒执行 --><!--10/10 * * ?* MON-FRI-->

</bean>

<!-- 控制开关 -->

<beanclass="org.springframework.scheduling.quartz.SchedulerFactoryBean">

<propertyname="triggers">

<list>

<!--<ref bean="cronTrigger" />-->

<!--<ref bean="clear_ticket" />-->

<!--<ref bean="sendMemberReport" />-->

<refbean="sendMemeberExcel"/>

</list>

</property>

</bean>

</beans>

Java计划任务(任务调度) 定时器 定时安排任务 如定时发送Excel表格到用户邮箱(quartz+poi+javax.mail)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。