Spring定时器技术终结者——采用Scheduled注释的方式实现Spring定时器

在Spring中有两种方式可以实现定时器的功能,分别是Scheduled注释方式和XML配置方式,本博客将介绍如何在Spring中使用Scheduled注释方式的方式实现定时器的功能,代码及相应的解释如下:

代码1—Spring配置文件(applicationContext.xml文件):

<?xml version="1.0" encoding="UTF-8"?>
<beans
    xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:task="http://www.springframework.org/schema/task"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context-2.5.xsd
    http://www.springframework.org/schema/task
    http://www.springframework.org/schema/task/spring-task-3.2.xsd">

	<!-- 使用annotation 自动注册bean -->
    <context:annotation-config />

    <!-- 对base-package属性指定的包中的所有类进行扫描,将包中被@Component、@Controller、@Service和@Respositor修饰的类完成bean创建和自动依赖注入。base-package 属性指定了需要扫描的类包,类包及其递归子包中所有的类都会被处理。-->
    <context:component-scan base-package="com.ghj"/>

    <!-- 设置任务执行者池的大小 -->
    <task:executor id="executor" pool-size="5" />
    <!-- 设置调度程序池的大小 -->
    <task:scheduler id="scheduler" pool-size="10" />
    <!-- 采用注解驱动的方式配置Spring定时器 -->
    <task:annotation-driven executor="executor" scheduler="scheduler" />
</beans>

注意:请留意上面代码中第05、11、12、21、23和25这6行代码。

代码2——Spring定时器测试类(SpringTimerTest.java文件):

package com.ghj.packageoftimer;

import java.text.SimpleDateFormat;
import java.util.Date;

import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

/**
 * Spring定时器测试类
 *
 * @author 高焕杰
 */
@Component//将本类完成bean创建和自动依赖注入
public class SpringTimerTest{

	/**
	 * Spring定时器测试方法
	 *
	 * @author 高焕杰
	 */
    @Scheduled(cron = "0 0/1 * * * ?")//通过@Scheduled注释将该方法定义为Spring定时调用的方法,其中cron用于指明该方法被调用的时机
    public void test(){
    	System.err.println(new SimpleDateFormat("yyyy 年 MM 月 dd 日 HH 时 mm 分 ss 秒").format(new Date()));
    }
}

代码3——加载Spring配置文件并启动Spring定时器的类(StartSpringTimer.java文件):

package com.ghj.packageoftest;

import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
 * 加载Spring配置文件,启动Spring定时器
 *
 * @author 高焕杰
 */
public class StartSpringTimer {

	public static void main(String[] args){
		new ClassPathXmlApplicationContext("conf/spring/applicationContext.xml");
		System.out.println("加载Spring配置文件完毕,Spring定时器成功启动!!!");
	}
}

这种方式实现Spring定时器的优点:

0分下载该Java工程资源

时间: 2024-12-27 20:05:04

Spring定时器技术终结者——采用Scheduled注释的方式实现Spring定时器的相关文章

Spring定时器技术终结者——采用XML配置的方式实现Spring定时器

在Spring中有两种方式可以实现定时器的功能,分别是Scheduled注释方式和XML配置方式,本博客将介绍如何在Spring中使用采用XML配置的方式实现定时器的功能,代码及相应的解释如下: 代码1-Spring配置文件(applicationContext.xml文件): <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.o

强大的Spring缓存技术(下)

基本原理 一句话介绍就是Spring AOP的动态代理技术. 如果读者对Spring AOP不熟悉的话,可以去看看官方文档 扩展性 直到现在,我们已经学会了如何使用开箱即用的 spring cache,这基本能够满足一般应用对缓存的需求. 但现实总是很复杂,当你的用户量上去或者性能跟不上,总需要进行扩展,这个时候你或许对其提供的内存缓存不满意了,因为其不支持高可用性,也不具备持久化数据能力,这个时候,你就需要自定义你的缓存方案了. 还好,spring 也想到了这一点.我们先不考虑如何持久化缓存,

基于Spring Boot技术栈 博客系统企业级前后端实战 渐进式讲解+Thymeleaf+Elasticsearch+多种数据库

第1章 Spring Boot 简介讲解Spring Boot的项目背景,已经与其他技术框架(比如,Spring.SpringMVC.SpringCloud等)的关系.简单介绍下Spring Boot 整个生态系统1-1 _Spring Boot博客_课程导学1-2 -Spring Boot 是什么 第2章 开启 Spring Boot 的第一个 Web 项目通过 Spring Initializr 来快速初始化一个 Spring Boot 原型,方便学员来极速体验Spring Boot.本课程

强大的Spring缓存技术(上)

缓存是实际工作中非常常用的一种提高性能的方法, 我们会在许多场景下来使用缓存. 本文通过一个简单的例子进行展开,通过对比我们原来的自定义缓存和 spring 的基于注释的 cache 配置方法,展现了 spring cache 的强大之处,然后介绍了其基本的原理,扩展点和使用场景的限制.通过阅读本文,你应该可以短时间内掌握 spring 带来的强大缓存技术,在很少的配置下即可给既有代码提供缓存能力. 概述 Spring 3.1 引入了激动人心的基于注释(annotation)的缓存(cache)

【java并发】传统线程技术中的定时器技术

传统线程技术中有个定时器,定时器的类是Timer,我们使用定时器的目的就是给它安排任务,让它在指定的时间完成任务.所以先来看一下Timer类中的方法(主要看常用的TimerTask()方法): 返回值 方法名 方法描述 void schedule(TimerTask task, long delay) 安排在指定延迟后执行指定的任务. void schedule(TimerTask task, long delay, long period) 安排指定的任务从指定的延迟后开始进行重复的固定延迟执

利用Spring.Net技术打造可切换的分布式缓存读写类

利用Spring.Net技术打造可切换的Memcached分布式缓存读写类 Memcached是一个高性能的分布式内存对象缓存系统,因为工作在内存,读写速率比数据库高的不是一般的多,和Radis一样具有高效的读写和分布式的优势,上一篇博文<Memcached在Windows下的配置和使用>已经对介绍过它在windows上的配置和使用. 新建ICacheWriter类--CacheWriter的接口,以达到通过配置文件可以切换缓存读写方式,例如,缓存读写也可以通过httpruntime.cach

Java多线程与并发库高级应用-传统定时器技术回顾

传统定时器技术回顾(jdk1.5以前) public class TraditionalTimerTest { static int count = 0; public static void main(String[] args) { //10秒后开始执行,每隔3秒执行一次 new Timer().schedule(new TimerTask() { @Override public void run() { System.out.println("bombing..."); } }

spring boot 学习(八)定时任务 @Scheduled

SpringBoot 定时任务 @Scheduled 前言 有时候,我们有这样的需求,需要在每天的某个固定时间或者每隔一段时间让应用去执行某一个任务.一般情况下,可以使用多线程来实现这个功能:在 Spring 框架下可以搭配 Quartz 来实现,附上笔记 Spring Quartz 实现多任务定时调用.在 SpringBoot 框架下,我们可以用 Spring scheduling 来实现定时任务功能. 首先,我们先创建一个 Spring Boot 项目.创建方法: * (自动完成初始化)ht

Spring Security技术栈开发企业级认证与授权

Spring Security技术栈开发企业级认证与授权网盘地址:https://pan.baidu.com/s/1mj8u6JQ 密码: 92rp备用地址(腾讯微云):https://share.weiyun.com/8b2ffc1839069b4399950333860754a4 密码:a539tn 第1章 课程导学介绍课程内容.课程特点,使用的主要技术栈,以及学习课程所需的前置知识 第2章 开始开发安装开发工具,介绍项目代码结构并搭建,基本的依赖和参数设置,开发hello world 第3