iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >springboot整合quartz定时任务框架的方法是什么
  • 417
分享到

springboot整合quartz定时任务框架的方法是什么

2023-06-26 06:06:09 417人浏览 泡泡鱼
摘要

今天小编给大家分享一下SpringBoot整合quartz定时任务框架的方法是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下

今天小编给大家分享一下SpringBoot整合quartz定时任务框架的方法是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

spring整合Quartz

  1. 添加Maven配置。

  2. 相关配置文件(不管是properties 还是yml。采用JDBC存储)。

  3. 创建quartz使用的数据表。

  4. 业务逻辑层中使用。

  5. 数据表

  6. 具体使用

pom文件

如下所示:

        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-WEB</artifactId>        </dependency>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-quartz</artifactId>        </dependency>

对应的properties 文件

放在resource目录下

# ===========================================================================# Configure Main Scheduler Properties 调度器属性# ===========================================================================#调度标识名 集群中每一个实例都必须使用相同的名称org.quartz.scheduler.instanceName = DefaultQuartzScheduler#ID设置为自动获取 每一个必须不同org.quartz.scheduler.instanceId = AUTO#============================================================================# Configure ThreadPool#============================================================================#线程池的实现类(一般使用SimpleThreadPool即可满足几乎所有用户的需求)org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool#指定线程数,至少为1(无默认值)(一般设置为1-100直接的整数合适)org.quartz.threadPool.threadCount = 25#设置线程的优先级(最大为java.lang.Thread.MAX_PRioRITY 10,最小为Thread.MIN_PRIORITY 1,默认为5)org.quartz.threadPool.threadPriority = 5#============================================================================# Configure JobStore#============================================================================# 触发失败阈值,未超过触发时间60s则直接触发,若超过则失火,log信息Handling 1 trigger(s) that missed their scheduled fire-time.org.quartz.jobStore.misfireThreshold = 60000#数据保存方式为数据库持久化org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX#数据库代理类,一般org.quartz.impl.jdbcjobstore.StdJDBCDelegate可以满足大部分数据库org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.StdJDBCDelegate#JobDataMaps是否都为String类型org.quartz.jobStore.useProperties = false#表的前缀,默认QRTZ_org.quartz.jobStore.tablePrefix = QRTZ_#是否加入集群org.quartz.jobStore.isClustered = true#调度实例失效的检查时间间隔org.quartz.jobStore.clusterCheckinInterval = 20000

配置类

package com.anjie.manage.quartz;import org.quartz.Scheduler;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.core.io.ClassPathResource;import org.springframework.scheduling.quartz.SchedulerFactoryBean;import org.springframework.scheduling.quartz.SpringBeanJobFactory;import org.springframework.transaction.PlatfORMTransactionManager;import javax.sql.DataSource;import java.io.IOException;@Configurationpublic class QuartzConfig {    @Autowired    private DataSource dataSource;    @Autowired    private PlatformTransactionManager txManager;    @Bean(name = "quartzScheduler")    public SchedulerFactoryBean quartzScheduler() throws IOException {        //创建SchedulerFactoryBean        SchedulerFactoryBean factory = new SchedulerFactoryBean();        //设置调度器自动运行        factory.setAutoStartup(true);        //设置配置文件位置        factory.setConfigLocation(new ClassPathResource("/quartz.properties"));        //设置job工厂,使job可以自动注入        SpringBeanJobFactory jobFactory = new SpringBeanJobFactory();        factory.setJobFactory(jobFactory);        //设置数据源        factory.setDataSource(dataSource);        //设置事务        factory.setTransactionManager(txManager);        //设置重写已存在的Job        factory.setOverwriteExistingJobs(true);        return factory;    }    @Bean(name = "scheduler")    public Scheduler scheduler() throws IOException {        return quartzScheduler().getScheduler();    }}

自定义任务类:ScheduledTask

package com.anjie.manage.quartz;import com.anjie.auth.common.exception.BadConfigurationException;import com.anjie.manage.common.SprinGContextUtil;import lombok.Setter;import lombok.extern.slf4j.Slf4j;import org.apache.commons.lang3.StringUtils;import org.quartz.Job;import org.quartz.JobExecutionContext;import org.springframework.context.ApplicationContext;import java.lang.reflect.Method;@Slf4j@Setterpublic class ScheduledTask implements Job {    private Integer id;    private String params;    private String serviceBeanName;    private String methodName;    @Override    public void execute(JobExecutionContext jobExecutionContext) {        try {            //使用反射执行spring中的任务            ApplicationContext wac = SpringContextUtil.getApplicationContext();            Class<?> serviceBean = wac.getBean(serviceBeanName).getClass();            if (StringUtils.isNotEmpty(params)){                Method method = serviceBean.getDeclaredMethod(methodName,String.class);                method.invoke(wac.getBean(serviceBean),params);            }else {                Method method = serviceBean.getDeclaredMethod(methodName,null);                method.invoke(wac.getBean(serviceBean),null);            }        }catch (Exception e){            throw new BadConfigurationException("任务执行失败");        }    }}

获取spring中bean的工具类:SpringContextUtil

package com.anjie.manage.common;import org.springframework.beans.BeansException;import org.springframework.context.ApplicationContext;import org.springframework.context.ApplicationContextAware;import org.springframework.stereotype.Component;@Componentpublic class SpringContextUtil implements ApplicationContextAware {    private static ApplicationContext applicationContext = null;    @Override    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {        SpringContextUtil.applicationContext = applicationContext;    }        public static ApplicationContext getApplicationContext() {        return applicationContext;    }}

定时任务服务接口:QuartzService

package com.anjie.manage.quartz.service;import com.anjie.manage.quartz.entity.po.QuartzTask;import java.util.List;public interface QuartzService {    void initAllTask(List<QuartzTask> scheduledTaskBeanList) throws Exception;    void addJob(QuartzTask scheduledTask);    void updateJob(QuartzTask quartzTask);    void deleteJob(QuartzTask quartzTask);    void runJobOnce(QuartzTask quartzTask);}

QuartzService实现类:QuartzServiceImpl

package com.anjie.manage.quartz.service.impl;import com.anjie.manage.quartz.entity.po.QuartzTask;import com.anjie.manage.quartz.ScheduledTask;import com.anjie.manage.quartz.service.QuartzService;import lombok.extern.slf4j.Slf4j;import org.quartz.*;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import org.springframework.util.CollectionUtils;import java.util.*;@Service@Slf4jpublic class QuartzServiceImpl implements QuartzService {    @Autowired    private Scheduler scheduler;    @Override    public void initAllTask(List<QuartzTask> quartzTaskList) throws Exception {        log.info("程序启动 ==> 初始化所有任务开始 !");        if (CollectionUtils.isEmpty(quartzTaskList)) {            scheduler.shutdown();            return;        }        for (QuartzTask quartzTask : quartzTaskList) {            //判断是否启动状态            if (quartzTask.getStatus()) {                this.addJob(quartzTask);            }        }        log.info("程序启动 ==> 初始化所有任务结束 !");    }    @Override    public void addJob(QuartzTask quartzTask) {        String taskName = quartzTask.getTaskName();        String groupName = quartzTask.getGroupName();        String cron = quartzTask.getCron();        TriggerKey triggerKey = TriggerKey.triggerKey(taskName, groupName);        try {            boolean result = scheduler.checkExists(triggerKey);            //job已存在,直接返回            log.info("checkExists quartTask = {} , result = {}", quartzTask, result);            if (result) {                return;            }            Job job = new ScheduledTask();            //构建job信息            JobDetail jobDetail = JobBuilder.newJob(job.getClass()).withIdentity(taskName, groupName).build();            //表达式调度构建器(即任务执行的时间)                        CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule(cron).withMisfireHandlingInstructionDoNothing();            //按新的cronExpression表达式构建一个新的trigger            CronTrigger trigger = TriggerBuilder.newTrigger().startNow().withIdentity(taskName, groupName).withSchedule(scheduleBuilder).build();            String[] serviceBean = quartzTask.getJobClass().split("\\.");            //获得JobDataMap,写入数据            Map<String, Object> paramMap = new HashMap<>();            paramMap.put("id", quartzTask.getId());            paramMap.put("params", quartzTask.getParams());            paramMap.put("methodName",serviceBean[1]);            paramMap.put("serviceBeanName",serviceBean[0]);            trigger.getJobDataMap().putAll(paramMap);            scheduler.scheduleJob(jobDetail, trigger);            log.info("addJob quartTask = {} is success", quartzTask);        } catch (Exception e) {            log.error("addJob quartTask = {} is fail, msg = {}", quartzTask, e);        }    }    @Override    public void updateJob(QuartzTask quartzTask) {        String taskName = quartzTask.getTaskName();        String groupName = quartzTask.getGroupName();        String cron = quartzTask.getCron();        TriggerKey triggerKey = TriggerKey.triggerKey(taskName, groupName);        try {            CronTrigger trigger = (CronTrigger) scheduler.getTrigger(triggerKey);            if (cron != null) {                // 表达式调度构建器                CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule(cron).withMisfireHandlingInstructionDoNothing();                // 按新的cronExpression表达式重新构建trigger                trigger = trigger.getTriggerBuilder().startNow().withIdentity(triggerKey).withSchedule(scheduleBuilder).build();            }            String[] serviceBean = quartzTask.getJobClass().split("\\.");            //获得JobDataMap,写入数据            Map<String, Object> paramMap = new HashMap<>();            paramMap.put("id", quartzTask.getId());            paramMap.put("params", quartzTask.getParams());            paramMap.put("serviceBeanName",serviceBean[0]);            paramMap.put("methodName",serviceBean[1]);            trigger.getJobDataMap().putAll(paramMap);            // 按新的trigger重新设置job执行            scheduler.rescheduleJob(triggerKey, trigger);            log.info("updateJob quartTask = {} is success", quartzTask);        } catch (SchedulerException e) {            log.error("updateJob quartTask = {} is fail, msg = {}", quartzTask, e);        }    }    @Override    public void deleteJob(QuartzTask quartzTask) {        String taskName = quartzTask.getTaskName();        String groupName = quartzTask.getGroupName();        try {            scheduler.pauseTrigger(TriggerKey.triggerKey(taskName, groupName));            scheduler.unscheduleJob(TriggerKey.triggerKey(taskName, groupName));            scheduler.deleteJob(JobKey.jobKey(taskName, groupName));            log.info("deleteJob quartTask = {} is success", quartzTask);        } catch (SchedulerException e) {            log.error("deleteJob quartTask = {} is fail, msg = {}", quartzTask, e);        }    }    @Override    public void runJobOnce(QuartzTask quartzTask){        String taskName = UUID.randomUUID().toString();        String groupName = UUID.randomUUID().toString();        try {//            Class<?> aClass = Class.forName(quartzTask.getJobClass());            Job job = new ScheduledTask();            //构建job信息            JobDetail jobDetail = JobBuilder.newJob(job.getClass()).withIdentity(taskName, groupName).build();            SimpleTrigger simpleTrigger = TriggerBuilder.newTrigger()                    .withIdentity(taskName, groupName)                    .startAt(new Date())                    .withSchedule(SimpleScheduleBuilder.simpleSchedule()                            .withIntervalInSeconds(1)                            .withRepeatCount(0))//重复执行的次数,因为加入任务的时候马上执行了,所以不需要重复,否则会多一次。                    .build();            String[] serviceBean = quartzTask.getJobClass().split("\\.");            //获得JobDataMap,写入数据            Map<String, Object> paramMap = new HashMap<>();            paramMap.put("id", quartzTask.getId());            paramMap.put("params", quartzTask.getParams());            paramMap.put("serviceBeanName",serviceBean[0]);            paramMap.put("methodName",serviceBean[1]);            simpleTrigger.getJobDataMap().putAll(paramMap);            scheduler.scheduleJob(jobDetail, simpleTrigger);        }catch (Exception e){            log.error("run job quartTask = {} is fail, msg = {}", quartzTask, e);        }    }}

ScheduledTaskRunner类

项目启动后获取数据库中的定时任务列表,初始化定时任务

package com.anjie.manage.quartz;import com.anjie.manage.quartz.entity.po.QuartzTask;import com.anjie.manage.quartz.service.QuartzService;import com.anjie.manage.quartz.service.QuartzTaskService;import lombok.extern.slf4j.Slf4j;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.ApplicationArguments;import org.springframework.boot.ApplicationRunner;import org.springframework.core.annotation.Order;import org.springframework.stereotype.Component;import java.util.List;@Component@Order(value = 1)@Slf4jpublic class ScheduledTaskRunner implements ApplicationRunner {    @Autowired    private QuartzTaskService quartzTaskService;    @Autowired    private QuartzService quartzService;    @Override    public void run(ApplicationArguments args) throws Exception {        log.info(" >>>>>> 项目启动完毕, 开启 => 需要自启的任务 开始!");        List<QuartzTask> activatedTaskList = quartzTaskService.list();        quartzService.initAllTask(activatedTaskList);        log.info(" >>>>>> 项目启动完毕, 开启 => 需要自启的任务 结束!");    }}

任务实体类:QuartzTask

映射数据库自定义任务表

package com.anjie.manage.quartz.entity.po;import com.baomidou.mybatisplus.annotation.IdType;import com.baomidou.mybatisplus.annotation.TableId;import com.baomidou.mybatisplus.annotation.TableName;import lombok.Data;@Data@TableName(value = "quartz_task")public class QuartzTask {        @TableId(type = IdType.AUTO)    private Integer id;        private String taskName;        private String groupName;        private String jobClass;        private String params;        private String cron;        private Boolean status;        private String des;}

任务dao层,我是用的是mybatis-plus

package com.anjie.manage.quartz.dao;import com.anjie.manage.quartz.entity.po.QuartzTask;import com.baomidou.mybatisplus.core.mapper.BaseMapper;import org.apache.ibatis.annotations.Mapper;import org.springframework.stereotype.Repository;@Repository@Mapperpublic interface QuartzTaskDao extends BaseMapper<QuartzTask> {}

任务service层

package com.anjie.manage.quartz.service;import com.anjie.manage.quartz.entity.po.QuartzTask;import com.baomidou.mybatisplus.extension.service.IService;public interface QuartzTaskService extends IService<QuartzTask> {}

service实现类

package com.anjie.manage.quartz.service.impl;import com.anjie.manage.quartz.entity.po.QuartzTask;import com.anjie.manage.quartz.dao.QuartzTaskDao;import com.anjie.manage.quartz.service.QuartzTaskService;import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;import org.springframework.stereotype.Service;@Servicepublic class QuartzTaskServiceImpl        extends ServiceImpl<QuartzTaskDao, QuartzTask>        implements QuartzTaskService{}

任务controller

package com.anjie.manage.quartz.controller;import com.anjie.manage.common.ResponseMessage;import com.anjie.manage.quartz.service.QuartzService;import com.anjie.manage.quartz.entity.po.QuartzTask;import com.anjie.manage.quartz.service.QuartzTaskService;import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;import com.baomidou.mybatisplus.core.metadata.IPage;import com.baomidou.mybatisplus.extension.plugins.pagination.Page;import lombok.extern.slf4j.Slf4j;import org.apache.commons.lang3.StringUtils;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.*;@RestController@Slf4j@RequestMapping("/quartz")public class JobController {    @Autowired    private QuartzService quartzService;    @Autowired    private QuartzTaskService quartzTaskService;    @PostMapping("/job")    public ResponseMessage addJob(@RequestBody QuartzTask quartzTask){        QueryWrapper<QuartzTask> queryWrapper = new QueryWrapper<>();        queryWrapper.eq("task_name",quartzTask.getTaskName());        QuartzTask queryResult = quartzTaskService.getOne(queryWrapper);        if (queryResult != null){            return ResponseMessage.fail("任务名称已存在!");        }        quartzTaskService.save(quartzTask);        return ResponseMessage.ok("操作成功!");    }    @PutMapping("/job")    public ResponseMessage updateJob(@RequestBody QuartzTask quartzTask){        //判断任务是否启用        Boolean status = quartzTaskService.getById(quartzTask.getId()).getStatus();        if (status){            return ResponseMessage.fail("任务正在运行中,请暂停后修改!");        }        //判断任务名称是否重名        QueryWrapper<QuartzTask> queryWrapper = new QueryWrapper<>();        queryWrapper.eq("task_name",quartzTask.getTaskName());        QuartzTask queryResult = quartzTaskService.getOne(queryWrapper);        if (queryResult != null &&!queryResult.getId().equals(quartzTask.getId())){            return ResponseMessage.fail("任务名称已存在!");        }        quartzTaskService.updateById(quartzTask);        return ResponseMessage.ok("操作成功!");    }    @DeleteMapping("/job/{id}")    public ResponseMessage deleteJob(@PathVariable Integer id){        //判断任务是否启用        Boolean status = quartzTaskService.getById(id).getStatus();        if (status){            return ResponseMessage.fail("任务正在运行中,请暂停后删除!");        }        quartzTaskService.removeById(id);        return ResponseMessage.ok("操作成功!");    }    @GetMapping("/job")    public ResponseMessage getJobPage(Page<QuartzTask> page,QuartzTask params){        QueryWrapper<QuartzTask> queryWrapper = new QueryWrapper<>();        if (StringUtils.isNotEmpty(params.getDes())){            queryWrapper.like("des",params.getDes());        }        if (StringUtils.isNotEmpty(params.getTaskName())){            queryWrapper.like("task_name",params.getTaskName());        }        if (StringUtils.isNotEmpty(params.getGroupName())){            queryWrapper.like("group_name",params.getGroupName());        }        if (params.getStatus() != null){            queryWrapper.eq("status",params.getStatus());        }        queryWrapper.orderByDesc("id");        IPage<QuartzTask> result = quartzTaskService.page(page,queryWrapper);        return ResponseMessage.ok("操作成功",result);    }    //    @RequestMapping(value = "/updateJobCron",method = RequestMethod.PUT)//    public Object updateJobCron(Integer id, String cron) {//        QuartzTask quartzTask = quartzTaskService.getById(id);//        Map<String, String> resultMap = new HashMap<>();//        //如果存在quartzTask对象//        if (quartzTask != null) {//            //修改任务的cron//            quartzTask.setCron(cron);//            //更新quart_task//            quartzTaskService.updateById(quartzTask);//            //如果启用状态则修改当前已持久化的job//            if (quartzTask.getStatus()) {//                quartzService.updateJob(quartzTask);//            }//            resultMap.put("status", "0");//            resultMap.put("msg", "修改cron成功");//            return resultMap;//        }//        //不存在quartzTask对象//        resultMap.put("status", "1");//        resultMap.put("msg", "修改cron失败");//        return resultMap;//    }        @PutMapping(value = "/jobStatus")    public ResponseMessage updateJobStatus(@RequestBody QuartzTask params) {        QuartzTask quartzTask = quartzTaskService.getById(params.getId());        if (quartzTask != null) {            //修改任务的启用状态            quartzTask.setStatus(params.getStatus());            //更新quart_task            boolean updateResult = quartzTaskService.updateById(quartzTask);            //根据status判断是新增job还是删除job            if (params.getStatus() && updateResult) {                quartzService.addJob(quartzTask);            } else if (updateResult){                quartzService.deleteJob(quartzTask);            }            return ResponseMessage.ok("修改状态成功");        }        return ResponseMessage.fail("修改状态失败");    }        @PostMapping("/runJob/{id}")    public ResponseMessage runJobOnce(@PathVariable Integer id){        QuartzTask quartzTask = quartzTaskService.getById(id);        if (quartzTask != null) {            quartzService.runJobOnce(quartzTask);            return ResponseMessage.ok("任务执行成功");        }        return ResponseMessage.fail("任务执行失败");    }}

到目前位置就对quartz框架整合完成,这里附上具体使用到的数据表

数据表

-- ------------------------------ Table structure for QRTZ_BLOB_TRIGGERS-- ----------------------------DROP TABLE IF EXISTS `QRTZ_BLOB_TRIGGERS`;CREATE TABLE `QRTZ_BLOB_TRIGGERS`  (  `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,  `TRIGGER_NAME` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,  `TRIGGER_GROUP` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,  `BLOB_DATA` blob NULL,  PRIMARY KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) USING BTREE,  INDEX `SCHED_NAME`(`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) USING BTREE,  CONSTRAINT `QRTZ_BLOB_TRIGGERS_ibfk_1` FOREIGN KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) REFERENCES `QRTZ_TRIGGERS` (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) ON DELETE RESTRICT ON UPDATE RESTRICT) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;-- ------------------------------ Table structure for QRTZ_CALENDARS-- ----------------------------DROP TABLE IF EXISTS `QRTZ_CALENDARS`;CREATE TABLE `QRTZ_CALENDARS`  (  `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,  `CALENDAR_NAME` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,  `CALENDAR` blob NOT NULL,  PRIMARY KEY (`SCHED_NAME`, `CALENDAR_NAME`) USING BTREE) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;-- ------------------------------ Table structure for QRTZ_CRON_TRIGGERS-- ----------------------------DROP TABLE IF EXISTS `QRTZ_CRON_TRIGGERS`;CREATE TABLE `QRTZ_CRON_TRIGGERS`  (  `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,  `TRIGGER_NAME` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,  `TRIGGER_GROUP` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,  `CRON_EXPRESSION` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,  `TIME_ZONE_ID` varchar(80) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,  PRIMARY KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) USING BTREE,  CONSTRAINT `QRTZ_CRON_TRIGGERS_ibfk_1` FOREIGN KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) REFERENCES `QRTZ_TRIGGERS` (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) ON DELETE RESTRICT ON UPDATE RESTRICT) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;-- ------------------------------ Table structure for QRTZ_FIRED_TRIGGERS-- ----------------------------DROP TABLE IF EXISTS `QRTZ_FIRED_TRIGGERS`;CREATE TABLE `QRTZ_FIRED_TRIGGERS`  (  `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,  `ENTRY_ID` varchar(95) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,  `TRIGGER_NAME` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,  `TRIGGER_GROUP` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,  `INSTANCE_NAME` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,  `FIRED_TIME` bigint(13) NOT NULL,  `SCHED_TIME` bigint(13) NOT NULL,  `PRIORITY` int(11) NOT NULL,  `STATE` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,  `JOB_NAME` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,  `JOB_GROUP` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,  `IS_NONCONCURRENT` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,  `REQUESTS_RECOVERY` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,  PRIMARY KEY (`SCHED_NAME`, `ENTRY_ID`) USING BTREE,  INDEX `IDX_QRTZ_FT_TRIG_INST_NAME`(`SCHED_NAME`, `INSTANCE_NAME`) USING BTREE,  INDEX `IDX_QRTZ_FT_INST_JOB_REQ_RCVRY`(`SCHED_NAME`, `INSTANCE_NAME`, `REQUESTS_RECOVERY`) USING BTREE,  INDEX `IDX_QRTZ_FT_J_G`(`SCHED_NAME`, `JOB_NAME`, `JOB_GROUP`) USING BTREE,  INDEX `IDX_QRTZ_FT_JG`(`SCHED_NAME`, `JOB_GROUP`) USING BTREE,  INDEX `IDX_QRTZ_FT_T_G`(`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) USING BTREE,  INDEX `IDX_QRTZ_FT_TG`(`SCHED_NAME`, `TRIGGER_GROUP`) USING BTREE) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;-- ------------------------------ Table structure for QRTZ_JOB_DETAILS-- ----------------------------DROP TABLE IF EXISTS `QRTZ_JOB_DETAILS`;CREATE TABLE `QRTZ_JOB_DETAILS`  (  `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,  `JOB_NAME` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,  `JOB_GROUP` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,  `DESCRIPTION` varchar(250) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,  `JOB_CLASS_NAME` varchar(250) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,  `IS_DURABLE` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,  `IS_NONCONCURRENT` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,  `IS_UPDATE_DATA` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,  `REQUESTS_RECOVERY` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,  `JOB_DATA` blob NULL,  PRIMARY KEY (`SCHED_NAME`, `JOB_NAME`, `JOB_GROUP`) USING BTREE,  INDEX `IDX_QRTZ_J_REQ_RECOVERY`(`SCHED_NAME`, `REQUESTS_RECOVERY`) USING BTREE,  INDEX `IDX_QRTZ_J_GRP`(`SCHED_NAME`, `JOB_GROUP`) USING BTREE) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;-- ------------------------------ Table structure for QRTZ_LOCKS-- ----------------------------DROP TABLE IF EXISTS `QRTZ_LOCKS`;CREATE TABLE `QRTZ_LOCKS`  (  `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,  `LOCK_NAME` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,  PRIMARY KEY (`SCHED_NAME`, `LOCK_NAME`) USING BTREE) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;-- ------------------------------ Table structure for QRTZ_PAUSED_TRIGGER_GRPS-- ----------------------------DROP TABLE IF EXISTS `QRTZ_PAUSED_TRIGGER_GRPS`;CREATE TABLE `QRTZ_PAUSED_TRIGGER_GRPS`  (  `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,  `TRIGGER_GROUP` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,  PRIMARY KEY (`SCHED_NAME`, `TRIGGER_GROUP`) USING BTREE) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;-- ------------------------------ Table structure for QRTZ_SCHEDULER_STATE-- ----------------------------DROP TABLE IF EXISTS `QRTZ_SCHEDULER_STATE`;CREATE TABLE `QRTZ_SCHEDULER_STATE`  (  `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,  `INSTANCE_NAME` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,  `LAST_CHECKIN_TIME` bigint(13) NOT NULL,  `CHECKIN_INTERVAL` bigint(13) NOT NULL,  PRIMARY KEY (`SCHED_NAME`, `INSTANCE_NAME`) USING BTREE) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;-- ------------------------------ Table structure for QRTZ_SIMPLE_TRIGGERS-- ----------------------------DROP TABLE IF EXISTS `QRTZ_SIMPLE_TRIGGERS`;CREATE TABLE `QRTZ_SIMPLE_TRIGGERS`  (  `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,  `TRIGGER_NAME` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,  `TRIGGER_GROUP` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,  `REPEAT_COUNT` bigint(7) NOT NULL,  `REPEAT_INTERVAL` bigint(12) NOT NULL,  `TIMES_TRIGGERED` bigint(10) NOT NULL,  PRIMARY KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) USING BTREE,  CONSTRAINT `QRTZ_SIMPLE_TRIGGERS_ibfk_1` FOREIGN KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) REFERENCES `QRTZ_TRIGGERS` (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) ON DELETE RESTRICT ON UPDATE RESTRICT) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;-- ------------------------------ Table structure for QRTZ_SIMPROP_TRIGGERS-- ----------------------------DROP TABLE IF EXISTS `QRTZ_SIMPROP_TRIGGERS`;CREATE TABLE `QRTZ_SIMPROP_TRIGGERS`  (  `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,  `TRIGGER_NAME` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,  `TRIGGER_GROUP` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,  `STR_PROP_1` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,  `STR_PROP_2` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,  `STR_PROP_3` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,  `INT_PROP_1` int(11) NULL DEFAULT NULL,  `INT_PROP_2` int(11) NULL DEFAULT NULL,  `LONG_PROP_1` bigint(20) NULL DEFAULT NULL,  `LONG_PROP_2` bigint(20) NULL DEFAULT NULL,  `DEC_PROP_1` decimal(13, 4) NULL DEFAULT NULL,  `DEC_PROP_2` decimal(13, 4) NULL DEFAULT NULL,  `BOOL_PROP_1` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,  `BOOL_PROP_2` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,  PRIMARY KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) USING BTREE,  CONSTRAINT `QRTZ_SIMPROP_TRIGGERS_ibfk_1` FOREIGN KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) REFERENCES `QRTZ_TRIGGERS` (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) ON DELETE RESTRICT ON UPDATE RESTRICT) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;-- ------------------------------ Table structure for QRTZ_TRIGGERS-- ----------------------------DROP TABLE IF EXISTS `QRTZ_TRIGGERS`;CREATE TABLE `QRTZ_TRIGGERS`  (  `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,  `TRIGGER_NAME` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,  `TRIGGER_GROUP` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,  `JOB_NAME` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,  `JOB_GROUP` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,  `DESCRIPTION` varchar(250) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,  `NEXT_FIRE_TIME` bigint(13) NULL DEFAULT NULL,  `PREV_FIRE_TIME` bigint(13) NULL DEFAULT NULL,  `PRIORITY` int(11) NULL DEFAULT NULL,  `TRIGGER_STATE` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,  `TRIGGER_TYPE` varchar(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,  `START_TIME` bigint(13) NOT NULL,  `END_TIME` bigint(13) NULL DEFAULT NULL,  `CALENDAR_NAME` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,  `MISFIRE_INSTR` smallint(2) NULL DEFAULT NULL,  `JOB_DATA` blob NULL,  PRIMARY KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) USING BTREE,  INDEX `IDX_QRTZ_T_J`(`SCHED_NAME`, `JOB_NAME`, `JOB_GROUP`) USING BTREE,  INDEX `IDX_QRTZ_T_JG`(`SCHED_NAME`, `JOB_GROUP`) USING BTREE,  INDEX `IDX_QRTZ_T_C`(`SCHED_NAME`, `CALENDAR_NAME`) USING BTREE,  INDEX `IDX_QRTZ_T_G`(`SCHED_NAME`, `TRIGGER_GROUP`) USING BTREE,  INDEX `IDX_QRTZ_T_STATE`(`SCHED_NAME`, `TRIGGER_STATE`) USING BTREE,  INDEX `IDX_QRTZ_T_N_STATE`(`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`, `TRIGGER_STATE`) USING BTREE,  INDEX `IDX_QRTZ_T_N_G_STATE`(`SCHED_NAME`, `TRIGGER_GROUP`, `TRIGGER_STATE`) USING BTREE,  INDEX `IDX_QRTZ_T_NEXT_FIRE_TIME`(`SCHED_NAME`, `NEXT_FIRE_TIME`) USING BTREE,  INDEX `IDX_QRTZ_T_NFT_ST`(`SCHED_NAME`, `TRIGGER_STATE`, `NEXT_FIRE_TIME`) USING BTREE,  INDEX `IDX_QRTZ_T_NFT_MISFIRE`(`SCHED_NAME`, `MISFIRE_INSTR`, `NEXT_FIRE_TIME`) USING BTREE,  INDEX `IDX_QRTZ_T_NFT_ST_MISFIRE`(`SCHED_NAME`, `MISFIRE_INSTR`, `NEXT_FIRE_TIME`, `TRIGGER_STATE`) USING BTREE,  INDEX `IDX_QRTZ_T_NFT_ST_MISFIRE_GRP`(`SCHED_NAME`, `MISFIRE_INSTR`, `NEXT_FIRE_TIME`, `TRIGGER_GROUP`, `TRIGGER_STATE`) USING BTREE,  CONSTRAINT `QRTZ_TRIGGERS_ibfk_1` FOREIGN KEY (`SCHED_NAME`, `JOB_NAME`, `JOB_GROUP`) REFERENCES `QRTZ_JOB_DETAILS` (`SCHED_NAME`, `JOB_NAME`, `JOB_GROUP`) ON DELETE RESTRICT ON UPDATE RESTRICT) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;-- ------------------------------ Table structure for quartz_task-- ----------------------------DROP TABLE IF EXISTS `quartz_task`;CREATE TABLE `quartz_task`  (  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',  `task_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '任务名称',  `group_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT 'group名称',  `job_class` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT 'job所在类',  `params` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '参数',  `cron` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT 'cron表达式',  `status` tinyint(1) NULL DEFAULT 0 COMMENT '状态',  `des` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '描述',  PRIMARY KEY (`id`) USING BTREE) ENGINE = InnoDB AUTO_INCREMENT = 16 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;

具体使用

新建具体需要执行任务

package com.anjie.manage.quartz;import com.anjie.manage.quartz.service.QuartzTaskService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;@Servicepublic class Task01 {    @Autowired    private QuartzTaskService quartzTaskService;    public void test(String param){        quartzTaskService.list();        System.out.println("test01被执行(任务示例)"+param);    }}

配置定时任务

注意:

这里的任务路径是需要执行的类中的方法路径,采用bean的名称 + 方法名(例:task01.test),名称首字母小写,不然会找不到bean,也可以自己给需要执行的任务类bean起名

参数是字符串,可以自己写JSON字符串,是否传参与方法中保持一致,方法中有形参,这里就必传,方法没有形参,这里就不传,不然任务会执行失败

springboot整合quartz定时任务框架的方法是什么

具体效果

springboot整合quartz定时任务框架的方法是什么

以上就是“springboot整合quartz定时任务框架的方法是什么”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网精选频道。

--结束END--

本文标题: springboot整合quartz定时任务框架的方法是什么

本文链接: https://www.lsjlt.com/news/307039.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • springboot整合quartz定时任务框架的方法是什么
    今天小编给大家分享一下springboot整合quartz定时任务框架的方法是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下...
    99+
    2023-06-26
  • springboot整合quartz定时任务框架的完整步骤
    目录Spring整合Quartzpom文件对应的properties 文件配置类自定义任务类:ScheduledTask获取spring中bean的工具类:SpringContext...
    99+
    2024-04-02
  • SpringBoot+SpringBatch+Quartz整合定时批量任务方式
    目录一、引言二、代码具体实现1、pom文件2、application.yaml文件3、Service实现类4、SpringBatch配置类5、Processor,处理每条数据6、封装...
    99+
    2024-04-02
  • SpringBoot整合Quartz实现定时任务详解
    目录Quartz简介核心概念SchedulerJobDetailJobTriggerSpringBoot整合Quartz准备数据库表Maven相关依赖配置文件quartz配置类创建任...
    99+
    2022-11-13
    SpringBoot Quartz SpringBoot Quartz定时任务
  • SpringBoot定时任务两种Spring Schedule与Quartz整合
    在Spring Boot中,可以使用两种方式来实现定时任务的调度:Spring Schedule和Quartz。1. Spring ...
    99+
    2023-08-14
    Spring
  • SpringBoot整合任务系统quartz和SpringTask的方法
    目录SpringBoot整合任务系统1:Quartz2:Task总结:SpringBoot整合任务系统 ​ 这里说的任务系统指的是定时任务。定时任务是企业级开发中必不可少的组成部分,...
    99+
    2022-11-13
    SpringBoot整合任务系统 SpringBoot quartz和SpringTask
  • Java springboot整合Shiro框架的方法是什么
    本篇内容主要讲解“Java springboot整合Shiro框架的方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java springboot整合Shiro框架的...
    99+
    2023-06-26
  • 详解定时任务框架Quartz的使用
    目录一、什么是Quartz二、Quartz Demo搭建三、Quartz核心详解一、什么是Quartz 什么是Quartz Quartz是OpenSymphony开源组织在Job s...
    99+
    2023-02-13
    定时任务框架Quartz使用 定时任务框架Quartz
  • SpringBoot整合Quartz及异步调用的方法是什么
    这篇文章主要介绍“SpringBoot整合Quartz及异步调用的方法是什么”,在日常操作中,相信很多人在SpringBoot整合Quartz及异步调用的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答...
    99+
    2023-07-05
  • 普通web整合quartz跑定时任务的示例
    目录一.场景(什么时候用到定时任务)二.目前都有哪些工具可以定时处理数据三.如何集成1.jar包下载2.理解几个核心概念 四.配置示例 五.在线cron表达式一....
    99+
    2024-04-02
  • Spring整合quartz做定时任务的示例代码
    今天我们来分享一波在spring项目使用quartz做定时任务。 首先我这里的项目已经是一个可以跑起来的完整项目,web.xml里面的配置我就不贴出来了。 1.新建一个类Config...
    99+
    2024-04-02
  • Springboot-admin整合Quartz实现动态管理定时任务的过程详解
    目录boot-admin整合Quartz实现动态管理定时任务加入依赖前端整合vue页面后端整合配置类单独数据源配置调度器配置任务模板Job示例类管理功能boot-admin整合Qua...
    99+
    2023-05-18
    Springboot-admin整合Quartz Springboot动态管理定时任务
  • Spring Boot 配置 Quartz 定时任务的方法
    Quartz有四个核心概念: Job:是一个接口,只定义一个方法 execute(JobExecutionContext context),在实现接口的 execute 方法中编写所...
    99+
    2024-04-02
  • SpringBoot整合aws的方法是什么
    这篇文章主要讲解了“SpringBoot整合aws的方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“SpringBoot整合aws的方法是什么”吧!引入依赖  &...
    99+
    2023-06-21
  • SpringBoot整合Jackson的方法是什么
    这篇文章主要介绍了SpringBoot整合Jackson的方法是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇SpringBoot整合Jackson的方法是什么文章都会有所收获,下面我们一起来看看吧。一、J...
    99+
    2023-07-05
  • SpringBoot整合Swagger的方法是什么
    本文小编为大家详细介绍“SpringBoot整合Swagger的方法是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“SpringBoot整合Swagger的方法是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知...
    99+
    2023-07-06
  • SpringBoot整合RocketMQ的方法是什么
    这篇文章主要介绍了SpringBoot整合RocketMQ的方法是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇SpringBoot整合RocketMQ的方法是什么文章都会有所收获,下面我们一起来看看吧。1...
    99+
    2023-07-05
  • springboot整合mongodb的方法是什么
    这篇文章主要介绍“springboot整合mongodb的方法是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“springboot整合mongodb的方法是什么”文章能帮助大家解决问题。1.mo...
    99+
    2023-07-05
  • phpYii2框架创建定时任务方法详解
    目录简单的定时任务脚步文件传递参数设置参数别名在Linux配置crontab在我们项目开发中,需要使用定时任务来完成批处理业务,下面通过Yii2框架来实现定时任务 Yii2框架定时任...
    99+
    2024-04-02
  • SpringBoot整合Lettuce redis的方法是什么
    这篇文章主要介绍了SpringBoot整合Lettuce redis的方法是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇SpringBoot整合Lettuce redis的方法是什么文章都会有所收获,下面...
    99+
    2023-07-06
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作