tio-boot jfinal-plugins整合cron4j

tio-boot 是一个基于Java的网络编程框架,用于快速开发高性能的网络应用程序。
cron4j 是一个广泛使用的定时任务框架

整合ecache需要用到jfinal-plugins
https://central.sonatype.com/artifact/com.litongjava/jfinal-p...

添加依赖

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <java.version>1.8</java.version>
    <maven.compiler.source>${java.version}</maven.compiler.source>
    <maven.compiler.target>${java.version}</maven.compiler.target>
    <graalvm.version>23.1.1</graalvm.version>
    <tio.boot.version>1.3.0</tio.boot.version>
    <lombok-version>1.18.30</lombok-version>
    <hotswap-classloader.version>1.2.1</hotswap-classloader.version>
    <final.name>web-hello</final.name>
    <main.class>com.litongjava.tio.web.hello.HelloApp</main.class>
  </properties>

  <dependencies>
    <dependency>
      <groupId>com.litongjava</groupId>
      <artifactId>tio-boot</artifactId>
      <version>${tio.boot.version}</version>
    </dependency>
    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <version>${lombok-version}</version>
      <optional>true</optional>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>com.litongjava</groupId>
      <artifactId>hotswap-classloader</artifactId>
      <version>${hotswap-classloader.version}</version>
    </dependency>
    <dependency>
      <groupId>com.litongjava</groupId>
      <artifactId>jfinal-plugins</artifactId>
      <version>1.0.0</version>
    </dependency>
    <dependency>
      <groupId>com.jfinal</groupId>
      <artifactId>activerecord</artifactId>
      <version>5.1.2</version>
    </dependency>
  </dependencies>

依赖解释

  • tio-boot是框架核心,
  • jfinal-plugins提供与Ehcache的集成
  • activerecord jfinal-plugins依赖jfinal-plugins

jfinal-plugins依赖如下

cron4j:2.2.5
ehcache-core:2.6.11
jedis:3.6.3
fst:2.57

Cron4jPluginConfig 配置类

这个类是一个配置类,用于初始化和配置 Cron4j 插件。它通过 @Configuration 注解标记为配置类。类中的方法 cron4jPlugin 通过 @Bean 注解标记为Bean方法,框架启动时会执行该方法并将返回值放到bean容器中。在这个方法中,创建了一个 Plugin 实例并启动它。destroyMethod指定在服务关闭时将会调用该方法,关闭该插件
cron4j插件的表达式和其他框架和语言的表达式不同,具体请参考文档
https://litongjava.github.io/jfinal-doc/en/9%20Cron4jPlugin/9...

package com.litongjava.tio.web.hello.config;

import com.litongjava.jfinal.aop.annotation.Bean;
import com.litongjava.jfinal.aop.annotation.Configuration;
import com.litongjava.jfinal.plugin.cron4j.Cron4jPlugin;
import com.litongjava.tio.web.hello.task.MyTask;

@Configuration
public class Cron4jPluginConfig {

  @Bean(destroyMethod = "stop")
  public Cron4jPlugin cron4jPlugin() {
    Cron4jPlugin cp = new Cron4jPlugin();
    // 每1分钟执行一次
    cp.addTask("* * * * * ", new MyTask());
    cp.start();
    return cp;
  }
}

创建一个任务

package com.litongjava.tio.web.hello.task;

import lombok.extern.slf4j.Slf4j;

@Slf4j
public class MyTask implements Runnable {

  @Override
  public void run() {
    log.info("执行任务");
  }

}

启动服务,测试任务是否执行


李通
215 声望0 粉丝