Java Web实现添加定时任务的方法示例

以下是“Java Web实现添加定时任务的方法示例”的完整攻略,分为两条示例:

示例一:使用Quartz框架实现Java Web定时任务

1. 引入相关依赖

在 pom.xml 文件中引入 Quartz 相关依赖:

<dependency>
    <groupId>org.quartz-scheduler</groupId>
    <artifactId>quartz</artifactId>
    <version>2.3.2</version>
</dependency>

2. 编写定时任务类

在项目中创建类,继承 Job 接口并实现 execute 方法,在该方法内编写具体的定时任务逻辑。

示例代码如下:

public class MyJob implements Job {

    @Override
    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
        // 定时任务逻辑
        // ...
    }

}

3. 配置定时任务

在项目中创建 Quartz 配置文件,指定具体的定时任务信息。

示例代码如下:

<bean id="myJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
    <property name="targetObject" ref="myJob"/>
    <property name="targetMethod" value="execute"/>
</bean>

<bean id="myTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
    <property name="jobDetail" ref="myJobDetail"/>
    <property name="cronExpression" value="0 0/5 * * * ?"/>
</bean>

<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
    <property name="triggers">
        <list>
            <ref bean="myTrigger"/>
        </list>
    </property>
</bean>

4. 启动定时任务

在项目启动时,创建并启动 scheduler,即可启动定时任务。

public class QuartzConfig {

    private static final String CRON_EXPRESSION = "0 0/5 * * * ?";

    @Bean
    public JobDetail myJobDetail() {
        return JobBuilder.newJob(MyJob.class)
            .withIdentity("myJob")
            .storeDurably()
            .build();
    }

    @Bean
    public Trigger myTrigger() {
        return TriggerBuilder.newTrigger()
            .forJob(myJobDetail())
            .withIdentity("myTrigger")
            .withSchedule(CronScheduleBuilder.cronSchedule(CRON_EXPRESSION))
            .build();
    }

    @Bean
    public SchedulerFactoryBean schedulerFactoryBean() {
        SchedulerFactoryBean schedulerFactoryBean = new SchedulerFactoryBean();
        schedulerFactoryBean.setJobDetails(myJobDetail());
        schedulerFactoryBean.setTriggers(myTrigger());
        return schedulerFactoryBean;
    }

}

示例二:使用Spring集成Quartz实现Java Web定时任务

1. 引入相关依赖

在 pom.xml 文件中引入 Spring 相关依赖和 Quartz 相关依赖:

<!-- Spring依赖 -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>RELEASE</version>
</dependency>

<!-- Quartz依赖 -->
<dependency>
    <groupId>org.quartz-scheduler</groupId>
    <artifactId>quartz</artifactId>
    <version>2.3.2</version>
</dependency>

2. 编写定时任务类

同示例一中的编写方式。

3. 配置定时任务

在 Spring 配置文件中配置定时任务的 cron 触发器。

示例代码如下:

<bean id="myJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
    <property name="targetObject" ref="myJob"/>
    <property name="targetMethod" value="execute"/>
</bean>

<bean id="myTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
    <property name="jobDetail" ref="myJobDetail"/>
    <property name="cronExpression" value="0 0/5 * * * ?"/>
</bean>

<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
    <property name="triggers">
        <list>
            <ref bean="myTrigger"/>
        </list>
    </property>
</bean>

4. 启动定时任务

在项目启动时,通过 Spring 的 SchedulerFactoryBean 获取 scheduler,即可启动定时任务。

public class QuartzConfig {

    private static final String CRON_EXPRESSION = "0 0/5 * * * ?";

    @Bean
    public JobDetail myJobDetail() {
        return JobBuilder.newJob(MyJob.class)
            .withIdentity("myJob")
            .storeDurably()
            .build();
    }

    @Bean
    public Trigger myTrigger() {
        return TriggerBuilder.newTrigger()
            .forJob(myJobDetail())
            .withIdentity("myTrigger")
            .withSchedule(CronScheduleBuilder.cronSchedule(CRON_EXPRESSION))
            .build();
    }

    @Bean
    public SchedulerFactoryBean schedulerFactoryBean() {
        SchedulerFactoryBean schedulerFactoryBean = new SchedulerFactoryBean();
        schedulerFactoryBean.setJobDetails(myJobDetail());
        schedulerFactoryBean.setTriggers(myTrigger());
        return schedulerFactoryBean;
    }

}

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java Web实现添加定时任务的方法示例 - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • Java Development Kit (JDK) 安装及环境配置方法

    下面给出完整的Java Development Kit (JDK)安装及环境配置方法攻略,包含以下具体内容: JDK的安装方法 访问Oracle官网下载JDK安装文件,下载地址为:https://www.oracle.com/java/technologies/javase-downloads.html 根据自己操作系统版本选择相应的JDK安装文件并下载,建…

    Java 2023年5月26日
    00
  • idea 访问html页面端口号显示的是63342而不是8080

    如果在使用 IntelliJ IDEA 打开一个 HTML 页面并使用内置的 Web 服务器时,访问页面的端口号不是 8080 而是 63342,这可能是因为 IntelliJ IDEA 使用了自己的端口号来运行内置的 Web 服务器。 解决此问题的步骤如下: 打开 IntelliJ IDEA 并进入项目。 从 IDEA 的顶部菜单栏选择 “Run” =&g…

    Java 2023年6月15日
    00
  • java如何将Object数组转换为指定类型数组

    将Object数组转换为指定类型数组的过程需要进行类型强转,下面是具体的步骤和示例。 创建指定类型数组 首先,需要确定要转换成哪种类型的数组,然后使用数组的静态方法创建一个指定类型的数组。例如创建一个字符串数组: String[] array = new String[objectArray.length]; 遍历Object数组 使用for循环或者for-…

    Java 2023年5月26日
    00
  • zookeeper实现分布式锁

    下面我将详细讲解如何使用zookeeper实现分布式锁。 什么是分布式锁? 分布式锁是一种用于控制分布式系统之间访问共享资源的机制。例如,在分布式系统中使用共享资源时,需要确保在任何时刻只有一个节点能够持有该资源。在这种情况下,分布式锁可以防止多个节点同时访问共享资源,从而保证系统的正确性和稳定性。 ZooKeeper简介 ZooKeeper是由Apache…

    Java 2023年5月20日
    00
  • 如何解决多线程安全问题?

    以下是关于如何解决多线程安全问题的完整使用攻略: 如何解决多线程安全问题? 在多线程编程中,为了避免多个线程同时访问共享导致的数据不一致、程序崩溃等问题,需要取相应的措施来解决多线程安全问题。以下是一些常的解决方法: 1. 使用锁机制 锁机制是一种常用的解决多线程安全问题的方法。在多线环境下,使用锁机制可以保证同一时间只有一个线程可以访问共享,从而避免了数据…

    Java 2023年5月12日
    00
  • 详解JAVA中获取文件MD5值的四种方法

    下面是“详解JAVA中获取文件MD5值的四种方法”的攻略: 1. 使用Java内置的MessageDigest类获取MD5值 Java语言提供了一个DigestMessage类,它可以将任意长度的数据转换成定长的数据,如将任意长度的文件转换成128位(16个字节)的MD5值。使用如下代码可以实现获取文件的MD5值: public static String …

    Java 2023年5月19日
    00
  • 深入研究spring boot集成kafka之spring-kafka底层原理

    深入研究Spring Boot集成Kafka之Spring Kafka底层原理 简介 Kafka是一个高效、可伸缩的消息系统,而Spring Kafka则是Spring Framework旗下的一个开源库,它提供了对Kafka的集成支持。本文将深入讲解Spring Kafka的底层原理,并提供两个示例代码来帮助读者更好地理解。 Spring Kafka的核心…

    Java 2023年5月20日
    00
  • 解决get请求入参@NotNull验证不生效问题

    针对“解决get请求入参@NotNull验证不生效问题”的问题,我们可以采取以下步骤进行解决。 引入相关依赖 首先,在 pom.xml 文件中添加以下依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-b…

    Java 2023年6月1日
    00
合作推广
合作推广
分享本页
返回顶部