在web開發中,我們經常需要定時完成一些功能。比如定義統計報表啊,統計用戶排名等等。利用spring就可以輕松地做到這些任務。下面我就以定時發送郵件來來展示如何利用spring定時發送郵件,以及spring對JavaMail的簡化。
MailService.java類
package com.open.quartz;
import org.springframework.mail.MailException;
import org.springframework.mail.MailSender;
import org.springframework.mail.SimpleMailMessage;
public class MailService {
private MailSender mailSender;
private SimpleMailMessage mailMessage;//郵件模板
public void sendMail() {
System.out.println("-----------發送郵件!---------");
SimpleMailMessage msg=new SimpleMailMessage(this.mailMessage);
msg.setText("this is a test mail");
try {
mailSender.send(msg);
} catch (MailException e) {
e.printStackTrace();
}
System.out.println("-----------發送成功!---------");
}
//省略set,get方法
}
在web.xml里添加以下代碼
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
在WEB-INF目錄下添加applicationContext.xml文件
<beans>
<bean id="mailSender"
class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="host" value="smtp.163.com"/>
<!-- 有些郵件服務器發送郵件需要認證,所以必須提供帳號 -->
<property name="username" value="填入用戶名"/>
<property name="password" value="填入密碼"/>
<property name="javaMailProperties">
<props>
<prop key="mail.smtp.auth">true</prop>
</props>
</property>
</bean>
<!--一個郵件模板-->
<bean id="mailMessage" class="org.springframework.mail.SimpleMailMessage">
<property name="to" value="asm_c_yuan@163.com"/>
<property name="from" value="asm_c_yuan@163.com"/>
<property name="subject" value="test"/>
</bean>
<bean id="ms" class="com.open.quartz.MailService" autowire="byName"/>
<bean id="reportJob"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="ms"/>
<property name="targetMethod" value="sendMail"/>
</bean>
<!--一個簡單的調度器-->
<bean id="simpleTrigger"
class="org.springframework.scheduling.quartz.SimpleTriggerBean">
<property name="jobDetail" ref="reportJob"/>
<property name="startDelay" value="1"/> 在web啟動多少毫秒后啟動任務
<property name="repeatInterval" value="100000000"/> 表示沒隔多少毫秒啟動
</bean>
<!--一個定時的調度器-->
<bean id="cronTrigger"
class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="reportJob"/>
<property name="cronExpression" value="0 0 6 * * ?"/> 指明每天早上6點啟動任務,表達式的解釋見下篇文章
</bean>
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="simpleTrigger"/>
</list>
</property>
</bean>
</bean>
MailService.java類



























<!-- 有些郵件服務器發送郵件需要認證,所以必須提供帳號 -->














<bean id="ms" class="com.open.quartz.MailService" autowire="byName"/>





<!--一個簡單的調度器-->






<!--一個定時的調度器-->













涉及的jar包有:spring.jar,javamail.jar,activation.jar,quartz.jar
轉自:http://www.aygfsteel.com/xfan/archive/2006/06/13/52577.html