方法一:在applicationContext.xml配置文件中配置
<task:scheduled-tasks>
<!-- 每天凌晨两点执行 -->
<task:scheduled ref="zginfoService" method="autoUpdate" cron="0 0 2 * * ?" /><!--测试 每个一分钟执行 (*/60 * * * * ?)-->
</task:scheduled-tasks>
zginfoService:类的名字;
autoUpdate:方法的名字;
/**
* 定时更新 员工信息表, 客户信息表
*/
//@Scheduled(cron = "*/3 * * * * ?")
public void autoUpdate(){
//客户表通过身份证号计算年龄
String sqlperson="SELECT T1.RID, T1.SFZH FROM YH_PERSON_INFOR T1";
List<Map<String, Object>> personList=sessionFactory.getCurrentSession().createSQLQuery(sqlperson).setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP).list();
Integer personAge = 0;
for (int i = 0; i < personList.size(); i++){
String sfzh = personList.get(i).get("SFZH")+"";
String rid = personList.get(i).get("RID")+"";
if (StringUtils.isNotEmpty(sfzh)&&(sfzh.length()==15||sfzh.length()==18)&&StringUtils.isNotBlank(rid)){
personAge=SearchTools.jsusereage(sfzh);
//将计算出的年龄更新到人员表中
String updatesql = "update YH_PERSON_INFOR set nl='"+personAge+"' where rid='"+rid+"'";
sessionFactory.getCurrentSession().createSQLQuery(updatesql).executeUpdate();
}
}
//员工通过身份证号计算年龄
String sqluser="SELECT T1.RID, T1.SFZH FROM ZGINFO T1";
List<Map<String, Object>> userList=sessionFactory.getCurrentSession().createSQLQuery(sqluser).setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP).list();
Integer userAge = 0;
for (int j = 0; j < userList.size(); j++){
String sfzhu = personList.get(j).get("SFZH")+"";
String ridu = personList.get(j).get("RID")+"";
if(StringUtils.isNotEmpty(sfzhu)&&(sfzhu.length()==15||sfzhu.length()==18)&&StringUtils.isNotBlank(ridu)){
userAge=SearchTools.jsusereage(sfzhu);
//将计算出的年龄更新到人员表中
String updatesql = "update ZGINFO set nl='"+userAge+"' where rid='"+ridu+"'";
sessionFactory.getCurrentSession().createSQLQuery(updatesql).executeUpdate();
}
}
}
方法二:在applicationContext.xml配置文件中配置
<!-- MessageRequestTask类中包含了msgRequest方法,用于执行定时任务 -->
<
bean
id
=
"msg_request"
class
=
"com.santorini.task.timer.MessageRequestTask"
></
bean
>
<!-- 定时器配置 -->
<
bean
id
=
"timeDitail"
class
=
"org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"
>
<
property
name
=
"targetObject"
ref
=
"msg_request"
></
property
>
<
property
name
=
"targetMethod"
value
=
"msgRequest"
></
property
>
</
bean
>
<!-- 定义时间间隔触发器 -->
<
bean
id
=
"timeTigger"
class
=
"org.springframework.scheduling.quartz.CronTriggerBean"
>
<
property
name
=
"jobDetail"
ref
=
"timeDitail"
></
property
>
<
property
name
=
"cronExpression"
>
<
value
>0 */5 * * * ?</
value
>
</
property
>
</
bean
>
<!-- 启动定时器 -->
<
bean
id
=
"startJob"
class
=
"org.springframework.scheduling.quartz.SchedulerFactoryBean"
>
<
property
name
=
"triggers"
>
<
list
>
<
ref
bean
=
"timeTigger"
/>
</
list
>
</
property
>
</
bean
>
JavaWeb中Spring的初始化放在Web.xml中写:
<!-- web中配置配置文件地址和类加载监听器 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>