`
xiaoyuqi00
  • 浏览: 25558 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

Quartz学习笔记(一)

    博客分类:
  • Java
阅读更多
  因为下个项目需要用到定时器,以前写定时器用的是 Timer类,都是一些比较简单的 Task ,这次的后台 Task 比较多,并且业务也相对复杂,所有再看需求 的同时,自己了看了下Quartz,先将学习笔记总结如下:

1、Quartz 简介
a、Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的日程序表。Jobs可以做成标准的Java组件或 EJBs。
b、主页:http://www.quartz-scheduler.org/
c、目前最近版本:Quartz 1.8.0 Released - 04/22/2010

2、笔记记录:
a、构建一个简单的 Quartz 程序
MySimpleExample.java
package com.sc.quartz.myexamples;

import java.util.Date;

import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SchedulerFactory;
import org.quartz.SimpleTrigger;
import org.quartz.TriggerUtils;
import org.quartz.impl.StdSchedulerFactory;

public class MySimpleExample {

	public void run() throws SchedulerException{
		// 创建调度者工厂
		SchedulerFactory schedulerFactory = new StdSchedulerFactory();
		// 用工厂创建一个调度者
		Scheduler scheduler = schedulerFactory.getScheduler();
		// 利用 Quartz 提供的 getNextGivenSecondDate 返回一个当前时间四舍五入的 5 的倍数时间
		long ts = TriggerUtils.getNextGivenSecondDate(null, 5).getTime();
		// 创建一个工作,并命名为‘job1’,放入‘group1’组中,HellowWorl 是在此工作中需要执行的类
		JobDetail jobDetail = new JobDetail("job1","group1",HelloWorld.class);
		// 创建一个触发器,并命名为‘trigger1’,将此触发器设置在 ‘job1’ 上 ,并设置什么情况下启动
		SimpleTrigger simpleTrigger = new SimpleTrigger("trigger1","job1", new Date(ts), null, -1, 1000L);
		// 将 ‘job1’ 加入调度者中,
		scheduler.scheduleJob(jobDetail, simpleTrigger);
		// 开始运行调度程序
		scheduler.start();
		// 停止调度程序
		// scheduler.shutdown(true);
	}
	
	public static void main(String[] args) throws SchedulerException {
		MySimpleExample example = new MySimpleExample();
		example.run();
	}
}


HellowWorld.java
package com.sc.quartz.myexamples;

import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;

public class HelloWorld implements Job {

	public void execute(JobExecutionContext arg0) throws JobExecutionException {
		System.out.println("Hello World...");
	}

}


这里说下HellowWord类,此类实现了 Job 接口,重写了 Job 接口中的 execute 方法,当调度程序开始运行后,系统会自动调用 HelloWorld 的 execute 方法,也就相当于 TimerTask类中的 run 方法。

b、Quartz 支持同时运行多个 Job,他会根据 quartz.properties 初始化相应的线程

c、Quartz 支持两种触发器,分别是:SimpleTrigger 和 CronTrigger,SimpleTrigger 适合一些简单的设置,例如:从什么时候开始,到什么时候,每间隔多少时间执行一次,一共执行多少次;如果你要实现一些比较复杂定时功能,就必须用 CronTrigger 类,他支持 Unix 的语言(Unix我也不熟)“0/20 * * * * ?”。
// 表达式:从当前开始,没20秒执行一次,‘秒’
CronTrigger trigger = new CronTrigger("trigger1", "group1", "job1",
                "group1", "0/20 * * * * ?");


d、Quartz 中参数的设置
Quartz 中的 JobDataMap 类,提供参数的存储,此类相当于 HaspMap 类,以键/值的方式存储数据,可以通过 JobExecutionContext 上下问类来获取 JobDataMap 的实例。
        // 获取上下文,并取出‘FAVORITE_COLOR’键对应的值
        JobDataMap data = context.getJobDetail().getJobDataMap();
        String favoriteColor = data.getString(FAVORITE_COLOR);
        // 为 ‘FAVORITE_COLOR’重新赋值
        data.put(EXECUTION_COUNT, count);



e、Quartz 可以设置打火策略
trigger.setMisfireInstruction(SimpleTrigger.MISFIRE_INSTRUCTION_RESCHEDULE_NOW_WITH_EXISTING_REPEAT_COUNT);


f、Quartz 可以设置运行失败后就行的操作
// 报错后立即重新运行
e2.setRefireImmediately(true);

// 报错后停止运行
e2.setUnscheduleAllTriggers(true);


g、Quartz 跳过特殊日期
Quartz 支持在规定好的时间内将写特定时间跳过
// Add the holiday calendar to the schedule
// 创建假期日期
AnnualCalendar holidays = new AnnualCalendar();

// halloween (Oct 31)
Calendar halloween = new GregorianCalendar(2005, 9, 31);
// 设置跳过这一天
holidays.setDayExcluded(halloween, true);

// 将此 holidays 告知调度者
sched.addCalendar("holidays", holidays, false, false);


h、Quartz 监听器
Quartz 支持监听器功能,目前可以监听三种状态:jobExecutionVetoed(Job执行被拒接)、jobToBeExecuted(job执行之前)、jobWasExecuted(job)执行之后。如果你想监听这些状态并想作出行为的话,需要实现 Quartz 提供的 JobListener 接口,并实现相应的方法,在其中写你要执行的程序

i、Quartz 支持插件功能
Quartz 可以通过读取xml来设置相应的参数,这样你就可以通过修改xml来修改相应的参数
org.quartz.plugin.jobInitializer.class = org.quartz.plugins.xml.XMLSchedulingDataProcessorPlugin
org.quartz.plugin.jobInitializer.fileNames = quartz_data.xml
org.quartz.plugin.jobInitializer.failOnFileNotFound = true
org.quartz.plugin.jobInitializer.scanInterval = 120
org.quartz.plugin.jobInitializer.wrapInUserTransaction = false


j、其他
Quartz 支持读取远程DB、支持优先级的设置、服务器集群等等等等。

3、总结
Quartz 支持的功能很多,用起来比较灵活,修改配置也很方便,并且 spring 对其也有支持,提供把 Quartz 整合在项目中。因为时间比较仓促,抽出了两天的时候才看 Quartz,所以了解的还是比较简单的,如果有什么问题或者错误还希望大家指出来,以便共同探讨,及时修改。
分享到:
评论
5 楼 congenlv 2012-04-11  
[code="java">
引用
[b][/b][b][/b][i][/i]]
4 楼 congenlv 2012-04-11  
		JobDetailImpl jobDetail = new JobDetailImpl();
		jobDetail.setJobClass(jobClass);
		jobDetail.setDescription(collectionType.getLabel());
		jobDetail.setKey(jobKey);
		jobDetail.setDurability(true);
		jobDetail.setRequestsRecovery(true);
		jobDetail.setJobDataMap(jobDataMap);
		// 触发器
		CronTriggerImpl trigger = new CronTriggerImpl();// 触发器名,触发器组
		trigger.setKey(triggerKey);
		trigger.setJobKey(jobKey);
		trigger.setCronExpression(cromExpression);// 触发器时间设定
		sched.scheduleJob(jobDetail, trigger);
		// 启动
		if (!sched.isShutdown()) {
			sched.start();
		}
	}
3 楼 lzq570 2011-02-10  
有完整demo吗?能否发一个
2 楼 xiaoyuqi00 2010-05-27  
beneo 写道
xiaoyuqi00 写道
  因为下个项目需要用到定时器,以前写定时器用的是 Timer类,都是一些比较简单的 Task ,这次的后台 Task 比较多,并且业务也相对复杂,所有再看需求 的同时,自己了看了下Quartz,先将学习笔记总结如下:

1、Quartz 简介
a、Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的日程序表。Jobs可以做成标准的Java组件或 EJBs。
b、主页:http://www.quartz-scheduler.org/
c、目前最近版本:Quartz 1.8.0 Released - 04/22/2010

2、笔记记录:
a、构建一个简单的 Quartz 程序
MySimpleExample.java
package com.sc.quartz.myexamples;

import java.util.Date;

import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SchedulerFactory;
import org.quartz.SimpleTrigger;
import org.quartz.TriggerUtils;
import org.quartz.impl.StdSchedulerFactory;

public class MySimpleExample {

	public void run() throws SchedulerException{
		// 创建调度者工厂
		SchedulerFactory schedulerFactory = new StdSchedulerFactory();
		// 用工厂创建一个调度者
		Scheduler scheduler = schedulerFactory.getScheduler();
		// 利用 Quartz 提供的 getNextGivenSecondDate 返回一个当前时间四舍五入的 5 的倍数时间
		long ts = TriggerUtils.getNextGivenSecondDate(null, 5).getTime();
		// 创建一个工作,并命名为‘job1’,放入‘group1’组中,HellowWorl 是在此工作中需要执行的类
		JobDetail jobDetail = new JobDetail("job1","group1",HelloWorld.class);
		// 创建一个触发器,并命名为‘trigger1’,将此触发器设置在 ‘job1’ 上 ,并设置什么情况下启动
		SimpleTrigger simpleTrigger = new SimpleTrigger("trigger1","job1", new Date(ts), null, -1, 1000L);
		// 将 ‘job1’ 加入调度者中,
		scheduler.scheduleJob(jobDetail, simpleTrigger);
		// 开始运行调度程序
		scheduler.start();
		// 停止调度程序
		// scheduler.shutdown(true);
	}
	
	public static void main(String[] args) throws SchedulerException {
		MySimpleExample example = new MySimpleExample();
		example.run();
	}
}


HellowWorld.java
package com.sc.quartz.myexamples;

import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;

public class HelloWorld implements Job {

	public void execute(JobExecutionContext arg0) throws JobExecutionException {
		System.out.println("Hello World...");
	}

}


这里说下HellowWord类,此类实现了 Job 接口,重写了 Job 接口中的 execute 方法,当调度程序开始运行后,系统会自动调用 HelloWorld 的 execute 方法,也就相当于 TimerTask类中的 run 方法。

b、Quartz 支持同时运行多个 Job,他会根据 quartz.properties 初始化相应的线程

c、Quartz 支持两种触发器,分别是:SimpleTrigger 和 CronTrigger,SimpleTrigger 适合一些简单的设置,例如:从什么时候开始,到什么时候,每间隔多少时间执行一次,一共执行多少次;如果你要实现一些比较复杂定时功能,就必须用 CronTrigger 类,他支持 Unix 的语言(Unix我也不熟)“0/20 * * * * ?”。
// 表达式:从当前开始,没20秒执行一次,‘秒’
CronTrigger trigger = new CronTrigger("trigger1", "group1", "job1",
                "group1", "0/20 * * * * ?");


d、Quartz 中参数的设置
Quartz 中的 JobDataMap 类,提供参数的存储,此类相当于 HaspMap 类,以键/值的方式存储数据,可以通过 JobExecutionContext 上下问类来获取 JobDataMap 的实例。
        // 获取上下文,并取出‘FAVORITE_COLOR’键对应的值
        JobDataMap data = context.getJobDetail().getJobDataMap();
        String favoriteColor = data.getString(FAVORITE_COLOR);
        // 为 ‘FAVORITE_COLOR’重新赋值
        data.put(EXECUTION_COUNT, count);



e、Quartz 可以设置打火策略
trigger.setMisfireInstruction(SimpleTrigger.MISFIRE_INSTRUCTION_RESCHEDULE_NOW_WITH_EXISTING_REPEAT_COUNT);


f、Quartz 可以设置运行失败后就行的操作
// 报错后立即重新运行
e2.setRefireImmediately(true);

// 报错后停止运行
e2.setUnscheduleAllTriggers(true);


g、Quartz 跳过特殊日期
Quartz 支持在规定好的时间内将写特定时间跳过
// Add the holiday calendar to the schedule
// 创建假期日期
AnnualCalendar holidays = new AnnualCalendar();

// halloween (Oct 31)
Calendar halloween = new GregorianCalendar(2005, 9, 31);
// 设置跳过这一天
holidays.setDayExcluded(halloween, true);

// 将此 holidays 告知调度者
sched.addCalendar("holidays", holidays, false, false);


h、Quartz 监听器
Quartz 支持监听器功能,目前可以监听三种状态:jobExecutionVetoed(Job执行被拒接)、jobToBeExecuted(job执行之前)、jobWasExecuted(job)执行之后。如果你想监听这些状态并想作出行为的话,需要实现 Quartz 提供的 JobListener 接口,并实现相应的方法,在其中写你要执行的程序

i、Quartz 支持插件功能
Quartz 可以通过读取xml来设置相应的参数,这样你就可以通过修改xml来修改相应的参数
org.quartz.plugin.jobInitializer.class = org.quartz.plugins.xml.XMLSchedulingDataProcessorPlugin
org.quartz.plugin.jobInitializer.fileNames = quartz_data.xml
org.quartz.plugin.jobInitializer.failOnFileNotFound = true
org.quartz.plugin.jobInitializer.scanInterval = 120
org.quartz.plugin.jobInitializer.wrapInUserTransaction = false


j、其他
Quartz 支持读取远程DB、支持优先级的设置、服务器集群等等等等。

3、总结
Quartz 支持的功能很多,用起来比较灵活,修改配置也很方便,并且 spring 对其也有支持,提供把 Quartz 整合在项目中。因为时间比较仓促,抽出了两天的时候才看 Quartz,所以了解的还是比较简单的,如果有什么问题或者错误还希望大家指出来,以便共同探讨,及时修改。


Timer无论何时都不要用

简单的定时任务没有必要用quartz

ScheduledExecutorService能够搞定一切


以前一直用的Timer后来才发现的Quartz,抽空看了下,发现用起来很方便,功能很强大,所以决定以后就用这个了!
1 楼 beneo 2010-05-26  
xiaoyuqi00 写道
  因为下个项目需要用到定时器,以前写定时器用的是 Timer类,都是一些比较简单的 Task ,这次的后台 Task 比较多,并且业务也相对复杂,所有再看需求 的同时,自己了看了下Quartz,先将学习笔记总结如下:

1、Quartz 简介
a、Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的日程序表。Jobs可以做成标准的Java组件或 EJBs。
b、主页:http://www.quartz-scheduler.org/
c、目前最近版本:Quartz 1.8.0 Released - 04/22/2010

2、笔记记录:
a、构建一个简单的 Quartz 程序
MySimpleExample.java
package com.sc.quartz.myexamples;

import java.util.Date;

import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SchedulerFactory;
import org.quartz.SimpleTrigger;
import org.quartz.TriggerUtils;
import org.quartz.impl.StdSchedulerFactory;

public class MySimpleExample {

	public void run() throws SchedulerException{
		// 创建调度者工厂
		SchedulerFactory schedulerFactory = new StdSchedulerFactory();
		// 用工厂创建一个调度者
		Scheduler scheduler = schedulerFactory.getScheduler();
		// 利用 Quartz 提供的 getNextGivenSecondDate 返回一个当前时间四舍五入的 5 的倍数时间
		long ts = TriggerUtils.getNextGivenSecondDate(null, 5).getTime();
		// 创建一个工作,并命名为‘job1’,放入‘group1’组中,HellowWorl 是在此工作中需要执行的类
		JobDetail jobDetail = new JobDetail("job1","group1",HelloWorld.class);
		// 创建一个触发器,并命名为‘trigger1’,将此触发器设置在 ‘job1’ 上 ,并设置什么情况下启动
		SimpleTrigger simpleTrigger = new SimpleTrigger("trigger1","job1", new Date(ts), null, -1, 1000L);
		// 将 ‘job1’ 加入调度者中,
		scheduler.scheduleJob(jobDetail, simpleTrigger);
		// 开始运行调度程序
		scheduler.start();
		// 停止调度程序
		// scheduler.shutdown(true);
	}
	
	public static void main(String[] args) throws SchedulerException {
		MySimpleExample example = new MySimpleExample();
		example.run();
	}
}


HellowWorld.java
package com.sc.quartz.myexamples;

import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;

public class HelloWorld implements Job {

	public void execute(JobExecutionContext arg0) throws JobExecutionException {
		System.out.println("Hello World...");
	}

}


这里说下HellowWord类,此类实现了 Job 接口,重写了 Job 接口中的 execute 方法,当调度程序开始运行后,系统会自动调用 HelloWorld 的 execute 方法,也就相当于 TimerTask类中的 run 方法。

b、Quartz 支持同时运行多个 Job,他会根据 quartz.properties 初始化相应的线程

c、Quartz 支持两种触发器,分别是:SimpleTrigger 和 CronTrigger,SimpleTrigger 适合一些简单的设置,例如:从什么时候开始,到什么时候,每间隔多少时间执行一次,一共执行多少次;如果你要实现一些比较复杂定时功能,就必须用 CronTrigger 类,他支持 Unix 的语言(Unix我也不熟)“0/20 * * * * ?”。
// 表达式:从当前开始,没20秒执行一次,‘秒’
CronTrigger trigger = new CronTrigger("trigger1", "group1", "job1",
                "group1", "0/20 * * * * ?");


d、Quartz 中参数的设置
Quartz 中的 JobDataMap 类,提供参数的存储,此类相当于 HaspMap 类,以键/值的方式存储数据,可以通过 JobExecutionContext 上下问类来获取 JobDataMap 的实例。
        // 获取上下文,并取出‘FAVORITE_COLOR’键对应的值
        JobDataMap data = context.getJobDetail().getJobDataMap();
        String favoriteColor = data.getString(FAVORITE_COLOR);
        // 为 ‘FAVORITE_COLOR’重新赋值
        data.put(EXECUTION_COUNT, count);



e、Quartz 可以设置打火策略
trigger.setMisfireInstruction(SimpleTrigger.MISFIRE_INSTRUCTION_RESCHEDULE_NOW_WITH_EXISTING_REPEAT_COUNT);


f、Quartz 可以设置运行失败后就行的操作
// 报错后立即重新运行
e2.setRefireImmediately(true);

// 报错后停止运行
e2.setUnscheduleAllTriggers(true);


g、Quartz 跳过特殊日期
Quartz 支持在规定好的时间内将写特定时间跳过
// Add the holiday calendar to the schedule
// 创建假期日期
AnnualCalendar holidays = new AnnualCalendar();

// halloween (Oct 31)
Calendar halloween = new GregorianCalendar(2005, 9, 31);
// 设置跳过这一天
holidays.setDayExcluded(halloween, true);

// 将此 holidays 告知调度者
sched.addCalendar("holidays", holidays, false, false);


h、Quartz 监听器
Quartz 支持监听器功能,目前可以监听三种状态:jobExecutionVetoed(Job执行被拒接)、jobToBeExecuted(job执行之前)、jobWasExecuted(job)执行之后。如果你想监听这些状态并想作出行为的话,需要实现 Quartz 提供的 JobListener 接口,并实现相应的方法,在其中写你要执行的程序

i、Quartz 支持插件功能
Quartz 可以通过读取xml来设置相应的参数,这样你就可以通过修改xml来修改相应的参数
org.quartz.plugin.jobInitializer.class = org.quartz.plugins.xml.XMLSchedulingDataProcessorPlugin
org.quartz.plugin.jobInitializer.fileNames = quartz_data.xml
org.quartz.plugin.jobInitializer.failOnFileNotFound = true
org.quartz.plugin.jobInitializer.scanInterval = 120
org.quartz.plugin.jobInitializer.wrapInUserTransaction = false


j、其他
Quartz 支持读取远程DB、支持优先级的设置、服务器集群等等等等。

3、总结
Quartz 支持的功能很多,用起来比较灵活,修改配置也很方便,并且 spring 对其也有支持,提供把 Quartz 整合在项目中。因为时间比较仓促,抽出了两天的时候才看 Quartz,所以了解的还是比较简单的,如果有什么问题或者错误还希望大家指出来,以便共同探讨,及时修改。


Timer无论何时都不要用

简单的定时任务没有必要用quartz

ScheduledExecutorService能够搞定一切

相关推荐

    Quartz学习笔记

    这个学习笔记将深入探讨Quartz的核心概念、主要功能以及如何在实际项目中使用它。 首先,我们要理解Quartz的基本架构。Quartz的核心组件包括Scheduler、Job、Trigger和Calendar。Scheduler是调度器,负责管理所有的...

    Quartz调度学习笔记

    Quartz 是一个强大的任务调度框架,由 OpenSymphony 开源组织开发,主要目的是提供一个用于在 Java 应用程序中安排任务执行的解决方案。Quartz 支持与 J2EE 和 J2SE 平台的无缝集成,允许开发者在各种类型的项目中...

    学习笔记_Quartz作业调度框架,使用corn表达式

    本学习笔记主要围绕Quartz的使用,特别是如何利用corn表达式来设置定时任务。 Quartz的核心概念包括Job(任务)、Trigger(触发器)和Scheduler(调度器)。Job是你要执行的实际业务逻辑,Trigger定义了Job何时被...

    Quartz入门学习(真丶入门)

    Quartz是一款开源的作业调度框架,它允许开发者创建和管理定时任务,以便在特定时间执行。在Java世界中,Quartz被广泛应用于...通过实践和学习,你将能够熟练掌握Quartz的使用,为你的项目带来更高效的自动化处理能力。

    Spring.NET学习笔记25——整合Quartz.NET例子

    刘冬编写Spring.NET学习笔记25——整合Quartz.NET例子。 原文: http://www.cnblogs.com/GoodHelper/archive/2009/11/20/SpringNet_QuartzNet.html

    quartz教程 quartz学习手册 quartz帮助手册

    六、Quartz学习资源 本教程、学习手册和帮助手册将详细阐述Quartz的各个方面,从基本使用到高级特性的实践,帮助开发者从初学者到精通者。通过阅读这些资料,你可以掌握如何在项目中有效地使用Quartz,提升系统的...

    Quartz1.8任务进程管理系统学习笔记一:版本1.8和之前版本的不同

    NULL 博文链接:https://jaykuen.iteye.com/blog/911106

    SpringBoot学习笔记完整教程

    Spring Boot 是一个基于 Spring 框架的快速开发...这个完整的 Spring Boot 学习笔记涵盖了从基础到进阶的各个方面,通过学习和实践,你可以掌握 Spring Boot 开发的核心技能,从而高效地构建高质量的 Java 后端应用。

    学习笔记 MHT2

    【学习笔记 MHT2】是一份综合性的IT学习资料,主要涵盖了JavaScript编程、软件开发工具、Web服务器技术、编码解码方法以及设计模式等多个领域的知识。以下是对这些知识点的详细阐述: 1. **JavaScript经典技巧**:...

    spring2.0学习笔记+spring定时任务

    标题中的“spring2.0学习笔记+spring定时任务”表明了这个压缩包文件包含的是关于Spring框架2.0版本的学习资料,特别是关于Spring的定时任务功能。Spring是Java开发中最广泛应用的轻量级框架之一,它提供了一整套...

    objective-c学习笔记

    学习笔记中可能包含了一些关于Objective-C图形编程的内容,如Core Graphics或Quartz 2D,它们是苹果平台进行低级绘图的API,可用于创建自定义视图和复杂的图形。 六、实践应用 理论学习后,通过编写简单的iOS应用...

    spring学习笔记

    这个“spring学习笔记”包含了与Spring框架相关的源代码和项目实践,旨在帮助学习者深入理解并掌握Spring的核心概念和技术。 首先,Spring的核心特性之一是依赖注入(Dependency Injection, DI),它允许开发者通过...

    Spring学习笔记(内含代码)

    这个“Spring学习笔记(内含代码)”包含了作者在深入研究Spring框架过程中所做的详细记录,旨在帮助初学者和有经验的开发者更好地理解和应用Spring。 Spring框架的核心特性包括依赖注入(Dependency Injection,DI...

    SpringBoot 学习笔记完整教程

    SpringBoot学习笔记完整教程 SpringBoot是Spring框架的一个简化版,旨在简化Spring应用程序的初始设置和开发过程。它集成了大量的常用库,如数据访问、安全、Web等,使得开发者可以快速构建健壮的微服务应用。本...

    Directshow(SDK)学习笔记

    DirectShow(SDK)是微软提供的一套用于Windows平台上的流媒体处理工具,它与DirectX一同发布。这个SDK主要用于多媒体数据的捕获、处理和回放,支持多种媒体格式,如Asf、Mpeg、Avi、Dv、Mp3、Wave等。DirectShow...

    springboot+quartz多任务

    Quartz则是一个强大的开源作业调度库,用于在Java应用中执行定时任务。本资源结合了Spring Boot与Quartz,提供了在Spring Boot环境中实现多任务调度的解决方案。 首先,我们需要了解Spring Boot的核心特性。Spring ...

Global site tag (gtag.js) - Google Analytics