请教使用spring整合的quartz的问题 我的定时时间是持久化到数据库里的,数据库里的时间一到quartz就是执行,但是spring.xml里面也需要设置一个默认的<value>定时时间,这样两个时间不就冲突了吗?我只想要数据库里的定时时间,spring.xml里的时间可以去掉不写吗?但是写成空 启动会报错,请教解决方案,谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这问题有点麻烦,我给说下思路吧首先要写自己的CronTriggerBean 即继承org.springframework.scheduling.quartz.CronTriggerBean并实现org.springframework.beans.factory.config.BeanPostProcessore.g: public class MyCronTriggerBean extends CronTriggerBean implements BeanPostProcessor { /** * */ private static final long serialVersionUID = 4147468197070900090L; @Override public Object postProcessAfterInitialization(Object arg0, String arg1) throws BeansException { // TODO Auto-generated method stub return bean; } @Override public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException { // TODO Auto-generated method stub beanbool flag = false; Date date = null; if (bean instanceof 你的bean类型) { flag = true; //数据库中查出时间 date = ...... ) 或者 if(beanName.equalsIgnoreCase(你的bean的名称)){ flag = true; //数据库中查询除时间 date = ...... } 如果有多个定时器都要按照你的方法实现的话,你可定义一个属性如BeanNames 在xml中注入 在这里判断就是:假如你是逗号隔开 for(String name : BeanNames.split(",")){ if(beanName.equalsIgnoreCase(你的bean的名称)){ flag = true; //数据库中查询除时间 date = ...... break; } } if(flag){ //将时间转化为CronExpression需要的表达式 例如0 0/5 * * * ? //具体表达式的写法google String cronExpression = changeDate(date);//自己实现 setCronExpression(cronExpression); return bean; } }}相应的xml变为: <bean id="myTrigger" class="MyCronTriggerBean"> <property name="jobDetail"> <!-- 配置要触发的bean --> <ref bean="......." /> </property> <!-- 触发的时间间隔 这里随便写个 防止报错--> <property name="cronExpression" value="0 0/5 * * * ?" /> <!-- 如果定义的传入beanNames ---> <property name="beanNames " value="aaa,bbbb,cccc" /> </bean>以上只是思路,是否实现需你自己测试 求Java初学者的一些练习题 问几个关于swt的问题 java类型转换 有没有办法看到.class中被封装起来的方法? 奇怪的问题,mysql直接用SQL语句插入中文正常,用储存过程就出错,恳请帮忙!!! 我照JSF写的入门程序,但是报错说找不着Face Servlet实例。 一个简单的问题 Java中static申明后的变量有什么用? 那位朋友可以详细讲讲守护线程? Is getXXX("tablename.fieldname") nonsense? 请高手帮忙看看这道题结果 怎么在eclipse中用com.borland.jbc1.layout.*
并实现
org.springframework.beans.factory.config.BeanPostProcessore.g: public class MyCronTriggerBean extends CronTriggerBean implements
BeanPostProcessor { /**
*
*/
private static final long serialVersionUID = 4147468197070900090L; @Override
public Object postProcessAfterInitialization(Object arg0, String arg1)
throws BeansException {
// TODO Auto-generated method stub
return bean;
} @Override
public Object postProcessBeforeInitialization(Object bean, String beanName)
throws BeansException {
// TODO Auto-generated method stub
beanbool flag = false;
Date date = null;
if (bean instanceof 你的bean类型) {
flag = true;
//数据库中查出时间
date = ......
)
或者
if(beanName.equalsIgnoreCase(你的bean的名称)){
flag = true;
//数据库中查询除时间
date = ...... }
如果有多个定时器都要按照你的方法实现的话,你可定义一个属性如BeanNames
在xml中注入
在这里判断就是:假如你是逗号隔开
for(String name : BeanNames.split(",")){
if(beanName.equalsIgnoreCase(你的bean的名称)){
flag = true;
//数据库中查询除时间
date = ......
break;
}
}
if(flag){
//将时间转化为CronExpression需要的表达式 例如0 0/5 * * * ?
//具体表达式的写法google
String cronExpression = changeDate(date);//自己实现
setCronExpression(cronExpression);
return bean;
}
}}
相应的xml变为:
<bean id="myTrigger"
class="MyCronTriggerBean">
<property name="jobDetail">
<!-- 配置要触发的bean -->
<ref bean="......." />
</property> <!-- 触发的时间间隔 这里随便写个 防止报错-->
<property name="cronExpression" value="0 0/5 * * * ?" />
<!-- 如果定义的传入beanNames --->
<property name="beanNames " value="aaa,bbbb,cccc" /> </bean>
以上只是思路,是否实现需你自己测试