<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>3.2.4.RELEASE</version>
</dependency>
commons-collections-3.2.jar 這個jar包一般都回有,檢查下就好。
<listener>
<description>Spring 核心配置</description>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath*:conf/spring/spring-config*.xml
</param-value>
</context-param>
3.定時器的配置
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.2.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.2.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util-3.2.xsd"
default-autowire="byName">
<!-- 5分鐘掃描一次 -->
<!-- 創建索引的業務類 用紅色表示出來是因爲這個 定時器的 類, 帶顏色的也就是自己需要許改的地方 -->
<bean name = "sendOrderNum" class="com.message.service.impl.ShopOrderMessageService"></bean>
<!-- 定義調用對象和調用對象的方法 -->
<bean name="sendTelMessage" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<!-- 調用的類 -->
<property name="targetObject">
<ref bean="sendOrderNum"/>
</property>
<!-- 調用類中的方法 -->
<property name="targetMethod">
<value>sendTelMessage</value>
</property>
</bean>
<!-- 定義觸發時間 -->
<bean name="myTime" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail">
<ref bean="sendTelMessage"/>
</property>
<!-- cron表達式 一個定時器可以有多個時間規則,這裏我沒用到 需要的話自己查看下 時間規則網上找起來很多-->
<property name="cronExpression">
<value>0 0/5 0-23 * * ?</value>
</property>
</bean>
<!-- 總管理類 如果將lazy-init='false'那麼容器啓動就會執行調度程序 mytask name注意不要和其他的bean重名-->
<bean name="mytask" lazy-init="false" autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="myTime"/>
</list>
</property>
</bean>
</beans>
4.java 的實現類 當然根據自己的情況自己編寫功能了,順便看下@Resource 和 @Autowired的區別
@Resource 這個是通過 name屬性進行查找的。使用情況:如果一個接口有多個實現類,這個時候我們就需要用到這個
@Autowired 這個是通過類型進行查找的。使用情況:只有一個類實現了接口。因爲spring在啓動的時候對所有的對象都進行了加載,所以找實現類還是很快的。 (個人實踐認爲:如果只有一個實現類的話,用這兩個是沒有區別的!)
package com.message.service.impl;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import com.common.utils.XmemcachedUtil;
import com.message.domain.ShopOrderMessage;
import com.message.service.IBuyTelphoneVerifyService;
import com.message.service.IMsgShopBuysService;
import com.message.service.IShopOrderMessageService;
import com.message.service.IShopOrdersService;
public class ShopOrderMessageService{
@Resource
private IShopOrderMessageService shopOrderMessageServiceImpl;
@Autowired
private IBuyTelphoneVerifyService buyTelphoneVerifyService;
@Autowired
private IShopOrdersService shopOrdersService;
@Autowired
private XmemcachedUtil xmemcachedUtil;
@Autowired
private IMsgShopBuysService shopBuysService;
Logger logger = Logger.getLogger(this.getClass());
public void sendTelMessage(){
try {
Map<String,Object> map = new HashMap<String,Object>();
map.put("yesOrNo", "0");
//查詢出需要發送消息的集合
List<ShopOrderMessage> list = shopOrderMessageServiceImpl.selectByParams(map);
//測試結束後需要改的地方 : 數據配置
//<![CDATA[AND UNIX_TIMESTAMP(NOW())-UNIX_TIMESTAMP(LAST_SEND_MSG_TIME) >= SHOP_SPACE_TIME * 5 * 60 ]]>
for(int i = 0;i < list.size();i++){
ShopOrderMessage s = list.get(i);
String shopId = s.getShopId();
int spaceTime = Integer.parseInt(s.getShopSpaceTime()) * 60;
int orderNum = shopOrdersService.selectOrderNum
(shopId,spaceTime,s.getLastSendMsgTime());
String context = "";
int buysNum = shopBuysService.selectBuysNum(shopId, spaceTime,s.getLastSendMsgTime());
if(orderNum != 0 && buysNum == 0){
context = "提醒:您有"+orderNum+"個新訂單!";
}else if(orderNum == 0 && buysNum != 0){
context = "提醒:您有"+buysNum+"個新的零售商申請!";
}else if(orderNum != 0 && buysNum != 0){
context = "提醒:您有"+orderNum+"個新訂單和"+buysNum+"個新的零售商申請!";
}
if(context.length() > 1){
buyTelphoneVerifyService.smsInfo(null,context,s.getTel());
}
s.setLastSendMsgTime(new Date());
shopOrderMessageServiceImpl.update(s);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}