SSM整合Quartz(八)上

简介: SSM整合Quartz(八)上

一. SSM 整合Quartz 前的准备


编写一个简单的Demo, 将Quartz 框架真正的放置到我们的 SSM项目里面, 用Maven 进行构建项目。


关于 Maven 构建 SSM框架, 可以参考老蝴蝶以前写的文章: Maven整合SSM项目(七)


这个代码太多,就不复制出来了。 后面会把这个项目的链接放置进来,可以下载查看。


仍然使用的是简单的 user 表, 存在于 quartz 数据库里面。

image.png


创建各种配置文件,各个目录结构如下所示:


image.png


像上一章节那样, 将 Quartz 框架融入到里面, applicationContext-job.xml 配置文件,就是配置 quartz的信息的。


二. SSM 整合 Quartz

设置一个定时,每10s 往 user 表里面添加一条数据, 插入的数据信息为 ‘两个蝴蝶飞’ 的信息。


UserServiceImpl 实现类已经配置了事务和 @Service(“userService”) 注解


image.png


二.一 工作任务实现

那么,此时的工作任务就应该是:

public class MyJob extends QuartzJobBean{
  @Resource(name="userService")
  private UserService userService;
  @Override
  protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
  //要做的事,是打印当前的时间 
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        //格式化时间
        String dateString=sdf.format(new Date());
        System.out.println("备份数据库的时间是:"+dateString);  
        User user=new User();
        user.setName("两个蝴蝶飞");
        user.setAge(24);
        user.setSex("男");
        user.setDescription("一个希望得到快乐的程序员");
        userService.addUser(user);
        System.out.println("添加成功");
  }
}


二.二 编写测试文件

编写 JobTest 测试类

package com.yjl.test;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
@RunWith(SpringJUnit4ClassRunner.class)
//引入配置文件 ,由于将 job和 spring 分开了,所以这儿用的是 -*, 而不能单单写 -job.xml 
@ContextConfiguration(value={"classpath*:/spring/applicationContext-*.xml"})
public class JobTest {
  @Test
  public void test(){
  System.out.println("CronTrigger 是否运行任务呢?");
  //需要休眠40s后,执行5次后,再关闭, 不然启动测试后直接关闭,看不出效果。
  try {
    Thread.sleep(40000);
  } catch (InterruptedException e) {
    // TODO 自动生成的 catch 块
    e.printStackTrace();
  }
  }
}


二.三 测试运行

控制台打印输出:

image.png


38行,指的是

userService.addUser(user);

NPE异常,则表示 userService 是null的, 即 userService 没有注入进来。


有两种方式可以解决这个问题

相关文章
|
Java Spring
SpringMVC中bean的加载控制
SpringMVC中bean的加载控制
105 0
|
10月前
|
XML 安全 Java
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
本文介绍了Java日志框架的基本概念和使用方法,重点讨论了SLF4J、Log4j、Logback和Log4j2之间的关系及其性能对比。SLF4J作为一个日志抽象层,允许开发者使用统一的日志接口,而Log4j、Logback和Log4j2则是具体的日志实现框架。Log4j2在性能上优于Logback,推荐在新项目中使用。文章还详细说明了如何在Spring Boot项目中配置Log4j2和Logback,以及如何使用Lombok简化日志记录。最后,提供了一些日志配置的最佳实践,包括滚动日志、统一日志格式和提高日志性能的方法。
2964 31
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
|
JavaScript Java API
Java日志通关(二) - Slf4j+Logback 整合及排包
作者日常在与其他同学合作时,经常发现不合理的日志配置以及五花八门的日志记录方式,后续作者打算在团队内做一次Java日志的分享,本文是整理出的系列文章第二篇。
|
JavaScript 前端开发 安全
js中?.、??、??=的用法及使用场景
【8月更文挑战第8天】 js中?.、??、??=的用法及使用场景
3454 1
|
Java API Maven
bcprov-jdk15on是什么依赖用在哪里
【6月更文挑战第11天】bcprov-jdk15on是什么依赖用在哪里
6643 3
|
Java API Maven
解决SLF4J和logback报错SLF4J: Failed to load class “org.slf4j.impl.StaticLoggerBinder“.
解决SLF4J和logback报错SLF4J: Failed to load class “org.slf4j.impl.StaticLoggerBinder“.
|
JavaScript 网络协议 安全
基于若依(SpringBoot前后分离版-vue)的WebSocket消息推送实现
基于若依(SpringBoot前后分离版-vue)的WebSocket消息推送实现
7017 2
|
前端开发 应用服务中间件 nginx
Nginx的反向代理自动301跳转避坑
当Web服务器为Nginx时,若浏览器访问的uri最后不带斜杠,如www.xxx.com.cn/aaa,当aaa是一个目录时,会产生301跳转,且自动将uri补全为www.xxx.com.cn/aaa/,最后添加一个/。当前端存在Nginx反向代理时,就会存在一个坑。
4807 0
|
前端开发 安全 JavaScript
【Spring MVC】(一)体系结构及开发环境搭建2
【Spring MVC】(一)体系结构及开发环境搭建2
172 0
【Spring MVC】(一)体系结构及开发环境搭建2