## tio-boot jfinal-plugins整合cron4j
tio-boot 是一个基于Java的网络编程框架,用于快速开发高性能的网络应用程序。
cron4j 是一个广泛使用的定时任务框架
整合ecache需要用到jfinal-plugins
https://central.sonatype.com/artifact/com.litongjava/jfinal-plugins
### 添加依赖
``` <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.1%20Overview.html
``` 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("执行任务"); } } ```
启动服务,观察任务是否执行
项目:tio-boot