亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

JAVA使用quartz添加定時任務(wù),并依賴注入對象操作

 更新時間:2020年09月25日 14:24:15   作者:你是格林我是童話  
這篇文章主要介紹了JAVA使用quartz添加定時任務(wù),并依賴注入對象操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

最近在寫定時任務(wù),以前沒接觸過。查了些相關(guān)資料說使用quartz定時框架。

需要配置文件:config-quartz.xml

相關(guān)配置如下(紅色部分是之后添加的,在后面步驟會說明):

<?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:context="http://www.springframework.org/schema/context"
 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/task
 http://www.springframework.org/schema/task/spring-task-3.0.xsd"> 
 
 <bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
 <property name="schedulerName" value="rqmis"></property>
 <property name="applicationContextSchedulerContextKey" value="applicationContextKey" />
 <property name="configLocation" value="classpath:quartz.properties" />
 <property name="autoStartup" value="true"></property>
 
 <property name="triggers">
 <list>
 
 <bean class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
 
 <property name="cronExpression" value="0 0 0 * * ?"></property>
 <property name="jobDetail">
 <bean class="org.springframework.scheduling.quartz.JobDetailFactoryBean">
  <property name="jobClass" value="com.wy.care60.job.HealthPlanJob" />
 </bean>
 </property>
 </bean>
 </list>
 </property>
 </bean>
 <!--</property>
 </bean>--> 
</beans>

quartz.properties

#============================================================================
# Configure Main Scheduler Properties 
#============================================================================
 
org.quartz.scheduler.instanceName = WrhFrameScheduler
org.quartz.scheduler.instanceId = AUTO 
org.quartz.scheduler.skipUpdateCheck = true
 
#============================================================================
# Configure ThreadPool 
#============================================================================
 
org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount = 12
org.quartz.threadPool.threadPriority = 5
 
#============================================================================
# Configure JobStore 
#============================================================================
 
org.quartz.jobStore.misfireThreshold = 60000 
org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore
 
#org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX
#org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.PostgreSQLDelegate
#org.quartz.jobStore.useProperties = false
#org.quartz.jobStore.dataSource = myDS
#org.quartz.jobStore.tablePrefix = QRTZ_
#org.quartz.jobStore.isClustered = false
 
#============================================================================
# Configure Datasources 
#============================================================================
 
#org.quartz.dataSource.myDS.driver = org.postgresql.Driver
#org.quartz.dataSource.myDS.URL = jdbc:postgresql://localhost/dev
#org.quartz.dataSource.myDS.user = jhouse
#org.quartz.dataSource.myDS.password = 
#org.quartz.dataSource.myDS.maxConnections = 5

最后spring-mvc.xml配置文件中獎quartz.xml文件引入即可:

<import resource="config-quartz.xml"></import>

然后寫測試類開始測試定時任務(wù):

package com.wy.care60.job; 
import com.wy.care60.dao.MElementMapper;
import com.wy.care60.dao.MInterEnumMapper;
import com.wy.care60.dao.MProjectMapper;
import com.wy.care60.model.MInterEnum;
import com.wy.care60.model.MProject;
import org.apache.tools.ant.Project;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.quartz.QuartzJobBean;
import org.springframework.stereotype.Component;
 
import javax.annotation.Resource;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
 
/**
 * Created by Administrator on 2017/12/20.
 */
@Component
public class HealthPlanJob extends QuartzJobBean {
 
 @Autowired
 MProjectMapper mProjectMapper;
 
 @Override
 public void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException {
 System.out.println(new Date());
 
 } 
}

發(fā)現(xiàn)時間可以打印出來,證明定時任務(wù)成功開啟;但是同時也發(fā)現(xiàn)了一個問題,就是依賴注入的 mProjectMapper值為null。

開始以為是Spring的原因,導(dǎo)致注解失敗,后來查了相關(guān)資料發(fā)現(xiàn),不是Spring的原因,而是因為:這個Job是由quartz實例化出來的,不受Spring的管理,所以就導(dǎo)致注入失敗。解決辦法是自己new一個類,讓Spring實例化這個類,代碼如下

import org.quartz.spi.TriggerFiredBundle;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.config.AutowireCapableBeanFactory;
import org.springframework.scheduling.quartz.AdaptableJobFactory; 
public class MyJobFactory extends AdaptableJobFactory { 
 
 @Autowired
 private AutowireCapableBeanFactory capableBeanFactory;
 
 protected Object createJobInstance(TriggerFiredBundle bundle) throws Exception {
 //調(diào)用父類的方法
 Object jobInstance = super.createJobInstance(bundle);
 capableBeanFactory.autowireBean(jobInstance);
 return jobInstance;
 } 
}

然后把這個類配置到Spring中去,(config-quartz.xml中紅色部分)

<bean id="jobFactory" class="com.wy.care60.job.MyJobFactory"></bean>

然后在把org.springframework.scheduling.quartz.SchedulerFactoryBean的jobFactory設(shè)置成我們自己的。(config-quartz.xml中紅色部分)

<bean name="MyScheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
  <!-- 其他屬性省略 -->
  <property name="jobFactory" ref="jobFactory"></property>
</bean>

config-quartz.xml完整版如下:

<?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:context="http://www.springframework.org/schema/context"
 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/task
 http://www.springframework.org/schema/task/spring-task-3.0.xsd"> 
 
 <bean id="jobFactory" class="com.wy.care60.job.MyJobFactory"></bean>
 <bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
 <property name="schedulerName" value="rqmis"></property>
 <property name="applicationContextSchedulerContextKey" value="applicationContextKey" />
 <property name="configLocation" value="classpath:quartz.properties" />
 <property name="autoStartup" value="true"></property>
 <property name="jobFactory" ref="jobFactory"></property>
 <property name="triggers">
 <list>
 
 <bean class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
 
 <property name="cronExpression" value="0 0 0 * * ?"></property>
 <property name="jobDetail">
 <bean class="org.springframework.scheduling.quartz.JobDetailFactoryBean">
  <property name="jobClass" value="com.wy.care60.job.HealthPlanJob" />
 </bean>
 </property>
 </bean>
 </list>
 </property>
 </bean>
 <!--</property>
 </bean>--> 
</beans>

到這為止,成功!

以上這篇JAVA使用quartz添加定時任務(wù),并依賴注入對象操作就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java zookeeper服務(wù)的使用詳解

    Java zookeeper服務(wù)的使用詳解

    ZooKeeper是一個分布式的,開放源碼的分布式應(yīng)用程序協(xié)調(diào)服務(wù),是Google的Chubby一個開源的實現(xiàn),是Hadoop和Hbase的重要組件。它是一個為分布式應(yīng)用提供一致性服務(wù)的軟件,提供的功能包括:配置維護(hù)、域名服務(wù)、分布式同步、組服務(wù)等
    2022-08-08
  • springboot實現(xiàn)簡單的消息對話的示例代碼

    springboot實現(xiàn)簡單的消息對話的示例代碼

    本文主要介紹了springboot實現(xiàn)簡單的消息對話的示例代碼,可以使用WebSocket技術(shù),WebSocket是一種在客戶端和服務(wù)器之間提供實時雙向通信的協(xié)議,具有一定的參考價值,感興趣的可以了解一下
    2023-09-09
  • springboot訪問404問題的解決辦法

    springboot訪問404問題的解決辦法

    工作中遇到url404問題,解決問題的進(jìn)程比較崎嶇,寫篇文章記錄,下面這篇文章主要給大家介紹了關(guān)于springboot訪問404問題的解決辦法,文中通過圖文介紹的非常詳細(xì),要的朋友可以參考下
    2023-03-03
  • java定時器timer的使用方法代碼示例

    java定時器timer的使用方法代碼示例

    這篇文章主要介紹了java定時器timer的使用方法代碼示例,向大家分享了兩部分代碼,詳細(xì)內(nèi)容請參見正文,還是比較不錯的,需要的朋友可以參考下。
    2017-11-11
  • Java多線程模擬銀行系統(tǒng)存錢問題詳解

    Java多線程模擬銀行系統(tǒng)存錢問題詳解

    本文將利用Java多線程模擬一個簡單的銀行系統(tǒng),使用兩個不同的線程向同一個賬戶存錢。文中的示例代碼講解詳細(xì),感興趣的可以了解一下
    2022-09-09
  • SpringBoot AOP注解失效問題排查與解決(調(diào)用內(nèi)部方法)

    SpringBoot AOP注解失效問題排查與解決(調(diào)用內(nèi)部方法)

    這篇文章主要介紹了SpringBoot AOP注解失效問題排查與解決(調(diào)用內(nèi)部方法),文中通過代碼示例介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-04-04
  • Hibernate雙向一對一映射關(guān)系配置代碼實例

    Hibernate雙向一對一映射關(guān)系配置代碼實例

    這篇文章主要介紹了Hibernate雙向一對一映射關(guān)系配置代碼實例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-10-10
  • Spring 實現(xiàn)數(shù)據(jù)庫讀寫分離的示例

    Spring 實現(xiàn)數(shù)據(jù)庫讀寫分離的示例

    現(xiàn)在大型的電子商務(wù)系統(tǒng),在數(shù)據(jù)庫層面大都采用讀寫分離技術(shù),我們通常的做法就是把查詢從主庫中抽取出來,采用多個從庫,使用負(fù)載均衡,減輕每個從庫的查詢壓力。
    2017-01-01
  • mybatis 多表關(guān)聯(lián)mapper文件寫法操作

    mybatis 多表關(guān)聯(lián)mapper文件寫法操作

    這篇文章主要介紹了mybatis 多表關(guān)聯(lián)mapper文件寫法操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • 解決mysql字符串類型的數(shù)字排序出錯:cast(year as signed)

    解決mysql字符串類型的數(shù)字排序出錯:cast(year as signed)

    這篇文章主要介紹了解決mysql字符串類型的數(shù)字排序出錯問題 :cast(year as signed),如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08

最新評論