<mark>此插件，主要社区贡献人（傲世孤尘）</mark>，详情见：[代码仓库](https://gitee.com/dromara/solon-plugins/tree/master/job-solon-plugin)。版本已纳入 solon-parent 管理

```xml
<dependency>
    <groupId>org.dromara.solon-plugins</groupId>
    <artifactId>job-solon-plugin</artifactId>
</dependency>
```

#### 1、描述

该插件提供了基于quartz的简单定时任务实现，特性如下：

- 提供了基于注解形式的Job声明，满足简单快速的使用场景
- 提供了自定义Job来源的支持，使得可以较为方便的从数据库加载定时任务
- 支持运行时动态新增、删除、启动、停止及手动触发Job执行


#### 2、使用方式

更多使用细节，可参照代码仓库的 `src/test` 包下的示例代码

* 使用注解`@JobHandler`声明Job

```java
@Component
@JobHandler(name = "JobDemo1", cron = "0/5 * * * * ?", param = "我是默认参数")
public class JobDemo1 implements IJobHandler {
    private static final Logger log = LoggerFactory.getLogger(JobDemo1.class);

    @Override
    public void execute(String param) throws Exception {
        log.info("JobDemo1 参数：{}", param);
    }

}
```

* 自定义Job来源


```java
@Component
public class JobService implements IJobSource {
    @Override
    public List<JobInfo> sourceList() {
        List<JobInfo> list = new ArrayList<>();
        // 正常场景下，此处一般用于从数据库读取Job配置，然后通过`Solon.context().getBean(xxx)`关联对应的Job实例
        list.add(new JobInfo()
                .setId("1") // 唯一标识，此处一般传数据库主键ID，也可与name相同
                .setName("Job示例") // 唯一标识，此处一般指定Bean的名称
                .setDesc("该job的描述1") // job描述
                .setCron("0/5 * * * * ?") // cron
                .setParam("我是默认参数") // 默认参数，可以不指定
                .setEnable(true) // 默认是否启用，默认不启用，运行时可以通过JobExecutor.start来启动
                .setJobHandler(new Job1())
        );
        return list;
    }
}
```