当前位置: 首页 > news >正文

仿牌做外贸建网站/商品标题优化

仿牌做外贸建网站,商品标题优化,超凡网络网站,分析seo做的不好的网站原文链接地址:https://www.jianshu.com/p/b9955ee663b5 说明: 核心框架: SpringBoot 2.1.2 任务调度框架: Quartz 2.3.0 持久层框架: mybatis-plus 3.0.7 数据库:mysql 8.0.12 1.项目目录结构 image.png 2.数据库表结构 DROP TABLE IF…

原文链接地址:https://www.jianshu.com/p/b9955ee663b5

说明:

核心框架: SpringBoot 2.1.2

任务调度框架: Quartz 2.3.0

持久层框架: mybatis-plus 3.0.7

数据库:mysql 8.0.12

1.项目目录结构

image.png

2.数据库表结构

 

DROP TABLE IF EXISTS `schedule_job`;
CREATE TABLE `schedule_job`  (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '任务id',`job_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '任务名称',`cron_expression` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT 'cron表达式',`bean_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '服务名称',`method_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '方法名称',`status` int(1) NOT NULL DEFAULT 1 COMMENT '状态 1.启动 2.暂停',`delete_flag` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否删除 0.否 1.是',`creator_id` int(11) NULL DEFAULT NULL COMMENT '创建人id',`creator_name` varchar(45) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '创建人',`created_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',`updated_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;SET FOREIGN_KEY_CHECKS = 1;

3.pom.xml

 

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.2.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.example</groupId><artifactId>demo</artifactId><version>0.0.1-SNAPSHOT</version><name>demo</name><description>Demo project for Spring Boot</description><properties><java.version>1.8</java.version></properties><dependencies><!--Web--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--Quartz--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-quartz</artifactId></dependency><!--Mysql驱动--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.11</version></dependency><!--Mybatis-Plus--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.0.7</version></dependency><!--Test--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>
</project>

4.application.yml

 

server:port: 8080
spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/lanjerry?useUnicode=yes&characterEncoding=UTF8&useSSL=false&serverTimezone=CTT&allowMultiQueries=trueusername: rootpassword: 123456hikari:max-lifetime: 1765000maximum-pool-size: 15aop:proxy-target-class: trueauto: true#mybatis-plus配置
mybatis-plus:global-config:db-config:field-strategy: not_emptyid-type: autodb-type: mysqllogic-delete-value: 1logic-not-delete-value: 0banner: falsemapper-locations: classpath:/mapper/*Mapper.xmltype-aliases-package: com.example.demo.domain

5.Quartz配置:QuartzConfig.class

 

@Configuration
public class QuartzConfig {@Beanpublic SchedulerFactoryBean schedulerFactoryBean(){SchedulerFactoryBean schedulerFactoryBean = new SchedulerFactoryBean();schedulerFactoryBean.setOverwriteExistingJobs(true);//覆盖已存在的任务schedulerFactoryBean.setStartupDelay(60);//延时60秒启动定时任务,避免系统未完全启动却开始执行定时任务的情况return schedulerFactoryBean;}// 创建schedule@Bean(name = "scheduler")public Scheduler scheduler() {return schedulerFactoryBean().getScheduler();}
}

6.实体:ScheduleJob.class,枚举:JobOperateEnum

 

@TableName("schedule_job")
public class ScheduleJob implements Serializable {private static final long serialVersionUID = 1L;@TableId(value = "id", type = IdType.AUTO)private Integer id;/*** 任务名称*/private String jobName;/*** cron表达式*/private String cronExpression;/*** 服务名称*/private String beanName;/*** 方法名称*/private String methodName;/*** 状态 1.启动 2.暂停*/private int status;/*** 是否删除 0.否 1.是*/@TableField(fill = FieldFill.INSERT)@TableLogicprivate Boolean deleteFlag;/*** 创建人id*/@TableField(fill = FieldFill.INSERT)private Integer creatorId;/*** 创建人*/@TableField(fill = FieldFill.INSERT)private String creatorName;/*** 创建时间*/@TableField(fill = FieldFill.INSERT)private LocalDateTime createdTime;/*** 更新时间*/@TableField(fill = FieldFill.UPDATE)private LocalDateTime updatedTime;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getJobName() {return jobName;}public void setJobName(String jobName) {this.jobName = jobName;}public String getCronExpression() {return cronExpression;}public void setCronExpression(String cronExpression) {this.cronExpression = cronExpression;}public String getBeanName() {return beanName;}public void setBeanName(String beanName) {this.beanName = beanName;}public String getMethodName() {return methodName;}public void setMethodName(String methodName) {this.methodName = methodName;}public int getStatus() {return status;}public void setStatus(int status) {this.status = status;}public Boolean getDeleteFlag() {return deleteFlag;}public void setDeleteFlag(Boolean deleteFlag) {this.deleteFlag = deleteFlag;}public Integer getCreatorId() {return creatorId;}public void setCreatorId(Integer creatorId) {this.creatorId = creatorId;}public String getCreatorName() {return creatorName;}public void setCreatorName(String creatorName) {this.creatorName = creatorName;}public LocalDateTime getCreatedTime() {return createdTime;}public void setCreatedTime(LocalDateTime createdTime) {this.createdTime = createdTime;}public LocalDateTime getUpdatedTime() {return updatedTime;}public void setUpdatedTime(LocalDateTime updatedTime) {this.updatedTime = updatedTime;}
}

 

public enum JobOperateEnum {START(1, "启动"),PAUSE(2, "暂停"),DELETE(3, "删除");private final Integer value;private final String desc;JobOperateEnum(final Integer value, final String desc) {this.value = value;this.desc = desc;}public Serializable getValue() {return this.value;}// Jackson 注解为 JsonValue 返回中文 json 描述public String getDesc() {return this.desc;}public String getEnumName() {return name();}
}

7.任务的调度工厂(主要是实现具体的执行)QuartzFactory.class

 

public class QuartzFactory implements Job {@Overridepublic void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {//获取调度数据ScheduleJob scheduleJob = (ScheduleJob) jobExecutionContext.getMergedJobDataMap().get("scheduleJob");//获取对应的BeanObject object = SpringUtil.getBean(scheduleJob.getBeanName());try {//利用反射执行对应方法Method method = object.getClass().getMethod(scheduleJob.getMethodName());method.invoke(object);} catch (Exception e) {e.printStackTrace();}}
}

8.具体的任务调度以及触发设置:QuartzServiceImpl.class(略过接口)

 

@Service
@Transactional
public class QuartzServiceImpl implements QuartzService {/*** 调度器*/@Autowiredprivate Scheduler scheduler;@Autowiredprivate ScheduleJobService jobService;@Overridepublic void timingTask() {//查询数据库是否存在需要定时的任务List<ScheduleJob> scheduleJobs = jobService.list();if (scheduleJobs != null) {scheduleJobs.forEach(this::addJob);}}@Overridepublic void addJob(ScheduleJob job) {try {//创建触发器Trigger trigger = TriggerBuilder.newTrigger().withIdentity(job.getJobName()).withSchedule(CronScheduleBuilder.cronSchedule(job.getCronExpression())).startNow().build();//创建任务JobDetail jobDetail = JobBuilder.newJob(QuartzFactory.class).withIdentity(job.getJobName()).build();//传入调度的数据,在QuartzFactory中需要使用jobDetail.getJobDataMap().put("scheduleJob", job);//调度作业scheduler.scheduleJob(jobDetail, trigger);} catch (Exception e) {throw new RuntimeException(e);}}@Overridepublic void operateJob(JobOperateEnum jobOperateEnum, ScheduleJob job) throws SchedulerException {JobKey jobKey = new JobKey(job.getJobName());JobDetail jobDetail = scheduler.getJobDetail(jobKey);if (jobDetail == null) {//抛异常}switch (jobOperateEnum) {case START:scheduler.resumeJob(jobKey);break;case PAUSE:scheduler.pauseJob(jobKey);break;case DELETE:scheduler.deleteJob(jobKey);break;}}@Overridepublic void startAllJob() throws SchedulerException {scheduler.start();}@Overridepublic void pauseAllJob() throws SchedulerException {scheduler.standby();}
}

9.实现CommandLineRunner接口,以达到开机启动执行:JobSchedule.class

 

@Component
public class JobSchedule implements CommandLineRunner {@Autowiredprivate QuartzService taskService;/*** 任务调度开始* @param strings* @throws Exception*/@Overridepublic void run(String... strings) throws Exception {System.out.println("任务调度开始==============任务调度开始");taskService.timingTask();System.out.println("任务调度结束==============任务调度结束");}
}

10.基础的配置完成,以下是几个简单的例子

执行的Job1:

 

@Component("testJob01")
@Transactional
public class TestJob01 {public void execute() {System.out.println("-------------------TestJob01任务执行开始-------------------");System.out.println(new Date());System.out.println("-------------------TestJob01任务执行结束-------------------");}
}

执行的Job2:

 

@Component("testJob02")
@Transactional
public class TestJob02 {public void execute() {System.out.println("-------------------TestJob02任务执行开始-------------------");System.out.println(new Date());System.out.println("-------------------TestJob02任务执行结束-------------------");}
}

配置的数据库:

 

image.png

11.业务类实现:ScheduleJobServiceImpl.class(略过接口)

 

@Service
@Transactional
public class ScheduleJobServiceImpl extends ServiceImpl<ScheduleJobMapper, ScheduleJob> implements ScheduleJobService {@Autowiredprivate QuartzService quartzService;@Overridepublic void add(ScheduleJob job) {//此处省去数据验证this.save(job);//加入jobtry {quartzService.addJob(job);} catch (Exception e) {e.printStackTrace();}}@Overridepublic void start(int id) {//此处省去数据验证ScheduleJob job = this.getById(id);job.setStatus(1);this.updateById(job);//执行jobtry {quartzService.operateJob(JobOperateEnum.START, job);} catch (SchedulerException e) {e.printStackTrace();}}@Overridepublic void pause(int id) {//此处省去数据验证ScheduleJob job = this.getById(id);job.setStatus(2);this.updateById(job);//执行jobtry {quartzService.operateJob(JobOperateEnum.PAUSE, job);} catch (SchedulerException e) {e.printStackTrace();}}@Overridepublic void delete(int id) {//此处省去数据验证ScheduleJob job = this.getById(id);this.removeById(id);//执行jobtry {quartzService.operateJob(JobOperateEnum.DELETE, job);} catch (SchedulerException e) {e.printStackTrace();}}@Overridepublic void startAllJob() {//此处省去数据验证ScheduleJob job = new ScheduleJob();job.setStatus(1);this.update(job, new QueryWrapper<>());//执行jobtry {quartzService.startAllJob();} catch (SchedulerException e) {e.printStackTrace();}}@Overridepublic void pauseAllJob() {//此处省去数据验证ScheduleJob job = new ScheduleJob();job.setStatus(2);this.update(job, new QueryWrapper<>());//执行jobtry {quartzService.pauseAllJob();} catch (SchedulerException e) {e.printStackTrace();}}
}

12.Controller类:ScheduleJobController.class

 

@RestController
@RequestMapping("/job")
public class ScheduleJobController {@Autowiredprivate ScheduleJobService jobService;@GetMapping(value = "/hello")public String helloSpringBoot() {return "Hello quartz!";}@GetMapping("/add")public String add() {ScheduleJob job = new ScheduleJob();job.setJobName("任务02");job.setCronExpression("0/2 * * * * ?");job.setBeanName("testJob02");job.setMethodName("execute");jobService.add(job);return "新增定时任务成功";}@GetMapping("/start/{id}")public String start(@PathVariable("id") Integer id) {jobService.start(id);return "启动定时任务成功";}@GetMapping("/pause/{id}")public String pause(@PathVariable("id") Integer id) {jobService.pause(id);return "暂停定时任务成功";}@GetMapping("/delete/{id}")public String delete(@PathVariable("id") Integer id) {jobService.delete(id);return "删除定时任务成功";}@GetMapping("/startAllJob")public String startAllJob() {jobService.startAllJob();return "启动所有定时任务成功";}@GetMapping("/pauseAllJob")public String pauseAllJob() {jobService.pauseAllJob();return "暂停所有定时任务成功";}
}

使用spring自带的@Scheduled注解实现的定时任务

 

@Component
@EnableScheduling
public class SchedulerTask {private int count = 0;@Scheduled(cron = "*/1 * * * * ?")private void process() {System.out.println("this is scheduler task runing  " + (count++));System.out.println("当前时间:" + LocalTime.now());}
}

除了业务层框架mybatis-plus的个别代码没贴出来,关于quartz的全贴出来了,完整源码:

https://gitee.com/lanjerry/quartz-demo



作者:Lanjerry
链接:https://www.jianshu.com/p/b9955ee663b5
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

http://www.jmfq.cn/news/5248351.html

相关文章:

  • 热门专业/seo外链工具
  • 遵义网红景点/360站长工具seo
  • 深圳宝安网站建设500元起价/微信软文范例大全100
  • 天津网站建设 阿土伯/seo168小视频
  • 二手房地产中介网站建设/seo站长工具综合查询
  • 品牌网站建设还来大蝌蚪/电池优化大师下载
  • 做酒店网站有哪些目录/营销推广的主要方式
  • 专做韩餐网站/怎么查百度收录
  • 鹰潭市网站建设公司/最好的搜索引擎
  • 学校网站注重服务平台建设/腾讯会议开始收费
  • 用iis做的网站怎么更改端口/最近的国际新闻
  • 网站开发推荐英文字体/seo排名赚下载
  • 做网站软件frontpage/口碑营销名词解释
  • 网站流量提升方法/手机制作网站的软件
  • 自己电脑做网站/关键词排名监控
  • 淮安哪里有做网站的/搜索引擎优化简称seo
  • 地推项目平台/兴安盟新百度县seo快速排名
  • 做网站分类链接/磁力蜘蛛搜索引擎
  • 网络营销课程多少钱/跟我学seo
  • 正规的网站制作电话多少/公司免费推广网站
  • 做外贸的经常浏览的三个网站/企业查询官网入口
  • wordpress不能发文章_只能在标题内写字/最优化方法
  • 深圳联雅网站建设/托管竞价推广公司
  • 网站可以做2个公司的吗/网络推广公司企业
  • 360极速浏览器网站开发缓存/百度人工客服在哪里找
  • 内部网站建设拓扑/站长工具源码
  • 所得税汇算是在12366网站做吗/长沙快速排名优化
  • 查看一个网站的备案人/信息流优化师没经验可以做吗
  • 注册500万公司每月交税/运营推广seo招聘
  • 网站做301打不开/产品网络营销策划方案