1.导包
<!-- quartz定时框架 --> <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>2.3.0</version> </dependency>
2.配置spring-job文件
<!--配置定时刷新微信的目标类--> <bean id="wxAccessTokenJob" class="com.xhh.wyzc.wx.job.WxAccessTokenJob"/> <!-- 定时刷新微信 accessToken--> <bean id="cronJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <!-- 执行目标job --> <property name="targetObject" ref="wxAccessTokenJob"/> <!-- 执行的方法 --> <property name="targetMethod" value="refreshAccessToken" /> </bean> <!--配置定时触发器--> <bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"> <property name="jobDetail" ref="cronJobDetail"/> <!--每隔30分钟执行一次--> <property name="cronExpression" value="0 0/30 * * * ?"/> </bean> <!--配置调度器工厂--> <bean id="schedulerFactoryBean" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <!--配置触发器--> <property name="triggers"> <list> <ref bean="cronTrigger"/> </list> </property> </bean>
3.job处理类
public class WxAccessTokenJob{ protected static final String WX_ACCESS_TOKEN = "WX_ACCESS_TOKEN"; protected static final String WX_ACCESS_TOKEN_GEN_TIME = "WX_ACCESS_TOKEN_GEN_TIME"; private final Logger logger = LoggerFactory.getLogger(this.getClass()); private static int times = 0; @Autowired private ConfigDao configDao; /** * 定时刷新微信accessToken * @throws JobExecutionException */ public void refreshAccessToken(){ Config accessTokenConfig = configDao.selectByKey(WX_ACCESS_TOKEN); String accessToken = accessTokenConfig.getCvalue(); Config accessTokenGenTimeConfig = configDao.selectByKey(WX_ACCESS_TOKEN_GEN_TIME); String accessTokenGenTime = accessTokenGenTimeConfig.getCvalue(); Long now = new Date().getTime(); accessToken = ApiTool.getAccessToken(SysInfo.CONFIG.get("WX_APPID"),SysInfo.CONFIG.get("WX_SECRET")); updateWxAccessToken(WX_ACCESS_TOKEN, accessToken); updateWxAccessToken(WX_ACCESS_TOKEN_GEN_TIME, now.toString()); logger.info("-----accessToken刷新:" + accessToken + "-----"); System.out.println("第"+times+++"次执行任务"); }