Spring监听配置的几种方式

来源:互联网 发布:网络四大吹 编辑:程序博客网 时间:2024/06/07 18:33

方法一:在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>


0 0
原创粉丝点击