???? 在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>涉及的jar包有:spring.jar,javamail.jar,activation.jar,quartz.jar
MailService.java類



































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














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





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






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












