`
mfkujjisk
  • 浏览: 2701 次
社区版块
存档分类
最新评论

spring timer不启动问题

阅读更多
spring写一个timer之后,不启动问题分析。

源文件:
1. timer类文件
@Component("task")
@Lazy
public class Task {
    public Task(){
        System.out.println("construct Task!!!");
    }
    DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

    @Scheduled(cron = "* * * * * ?")
    public void pushQuestionnaire() {

        System.out.println("定时任务1,自动执行:" + format.format(new Date()));
    }
}

2. spring-config.xml主要配置
    <context:annotation-config />
    <context:component-scan base-package="heller"/>
    <!--开启配置-->
    <task:scheduler id="qbScheduler" pool-size="10"/>
    <task:annotation-driven scheduler="qbScheduler" mode="proxy"/>

3. 启动spring
public class Start {
    public static void main(String[] args) throws InterruptedException {
        ApplicationContext context = new ClassPathXmlApplicationContext("./spring-config.xml");       
    }
}

问题
启动Start类后,不能执行Task里面定义的任务

分析
1. 我们看spring-config.xml里面的配置
<task:scheduler id="qbScheduler" pool-size="10"/>表示创建了一个计划任务的线程池实例。
<task:annotation-driven scheduler="qbScheduler" mode="proxy"/>这个注解表示从spring管理的实例中扫描,看是否有实例带有@Scheduled标签的类,如果有则把这个实例放入任务线程池中。而我们的Task类上的注解Lazy默认为true,也就是不会创建实例,所以也就不会加到任务线程池中。

解决办法
在Task类上面加入@Lazy(false)注解
分享到:
评论

相关推荐

    Spring使用timer定时器-能精确几点运行定时任务

    请注意,`Timer`并不是线程安全的,如果需要处理多个并发任务,建议使用`ScheduledExecutorService`,它是Spring `@Scheduled`注解背后的实际实现。 总结,Spring中使用`Timer`和`TimerTask`来实现精确时间运行的...

    3. spring版 timer HelloWorld

    4. **启动应用**:最后,启动Spring应用,`scheduleTask`方法会在指定的cron表达式触发时执行,调用`HelloWorldTask`的`run`方法,打印出“Hello, World!”。 通过这个简单的例子,我们了解到如何在Spring框架中...

    java_Timer定时器实例_Spring实例

    标题与描述均提到了“Java_Timer定时器实例_Spring实例”,这表明文章主要讨论的是如何在Java中使用Timer类创建定时任务,并将其整合到Spring框架中。以下是对该主题的详细解析: ### Java中的Timer定时器 #### ...

    spring-timer-quartz.zip_namegnd_spring定时任务

    在IT行业中,定时任务是许多应用不可或缺的一部分,用于在特定时间执行特定的业务逻辑,例如数据备份、报表生成等。Spring框架提供了强大的定时任务支持,可以方便地与Spring MVC进行集成,实现灵活的定时任务调度。...

    java Timer定时器实例 Spring实例.doc

    【Java Timer定时器】 在Java中,`java.util.Timer` 类是用于调度任务的类,它可以在特定的时间点或者按照设定的周期执行某项任务。`Timer` 类提供了两种计划任务的方法:`schedule(TimerTask task, long delay)` ...

    定时启动--启动按钮(spring注入)

    Timer timer = new Timer(); // 创建一个定时器实例 TimerTask task = new TimerTask() { // 创建一个定时任务 @Override public void run() { // 重写 run 方法 System.out.println("定时任务开始执行"); } ...

    spring配置定时器

    Spring框架提供了多种实现定时任务的方式,包括但不限于`@Scheduled`注解、`ScheduledExecutorService`以及`Timer`类。其中,基于`Timer`类的定时任务配置较为传统但依然具有一定的实用价值,尤其是在需要控制任务...

    Spring定时器TimerTask用法

    在Java世界中,`java.util.Timer` 和 `java.util.TimerTask` 是用于实现定时任务的基本工具,但它们在多线程环境中的表现并不理想,容易引发内存泄漏。Spring框架提供了更强大的定时任务管理机制,可以避免这些问题...

    解决timer循环引用的问题

    在iOS开发中,定时器(Timer)是一种常用的技术,用于执行特定间隔的任务。然而,不当使用定时器会导致内存管理问题,尤其是循环引用。循环引用是iOS内存管理中的一个常见陷阱,它可能导致对象无法被正确释放,进而...

    Spring排程(Scheduling)技术

    Timer类主要用于执行一次性的任务或周期性任务,但它的功能相对有限,不适用于处理复杂的时间调度需求。例如,下面是一个使用Timer创建简单定时任务的例子: ```java import java.util.TimerTask; public class ...

    java 定时器 spring 定时器

    这些问题在Spring框架中得到了改善。 Spring定时器,也称为Spring的`@Scheduled`注解和`TaskScheduler`接口,提供了更强大且灵活的定时任务管理。Spring使用`@Configuration`类配合`@EnableScheduling`注解开启定时...

    spring + jdk TimerTask定时器

    Spring并不直接支持`TimerTask`,但可以通过Spring的`TaskScheduler`接口间接使用。`TaskScheduler`允许你异步执行任务,并可以设定延迟和周期。 首先,创建一个`@Component`,实现`TimerTask`,然后定义一个`@Bean...

    spring和java定时器

    这里用到的`Timer`类是Java标准库中的定时器,它可以按照预设的时间间隔或绝对时间点执行任务,但其功能相对简单,不适合处理复杂的调度需求。 总结起来,Spring的定时任务通过Quartz库提供了更强大和灵活的定时...

    spring任务调度实例

    TaskExecutor提供了异步执行任务的能力,但需要注意的是,Timer在处理多个定时任务时可能会有线程安全问题,因此在大型项目中通常不推荐使用。 在本实例中,你将学习到如何设置Quartz和Timer,以及如何在Spring中...

    java定时spring定时源码包含定时和spring必须包直接导入可运行无需连接数据库

    通过深入分析和运行这个源码,你可以学习到如何设置任务执行间隔、如何处理并发问题、如何在Spring中管理定时任务,以及如何在不需要外部数据库的情况下实现业务逻辑。这对于理解和掌握Spring框架以及Java定时任务的...

    spring几种定时执行任务方法 TimeTask Quartz

    - **生命周期管理**:Spring容器管理的定时任务,随着应用的启动和关闭自动开始和停止,无需手动干预。 **示例**: ```java @Component public class ScheduledTasks { @Scheduled(cron = "0 0 7 * * 1-5") // ...

    SPRING 定时器的使用

    本文将以一个具体的例子——商丘地区集抄系统每日向中间库传输日冻结数据的过程——来介绍如何使用Spring框架中的`java.util.Timer`实现定时任务。 #### Java Timer的实现 1. **定义定时任务类** 首先,需要创建...

    spring2 计划任务

    Spring提供了一个接口`org.springframework.scheduling.quartz.SchedulerFactoryBean`,用于配置和启动Quartz调度器。 2. **基于Java的Timer和TimerTask**:虽然Spring更推荐使用Quartz,但同时它也支持使用JDK自带...

    Timer定时器代码.zip

    在大型企业级应用如Spring、Struts2和Mybatis的组合框架下,`Timer`和`TimerTask`可以发挥重要作用,比如进行后台数据处理、定期检查更新、发送通知等。下面我们将详细探讨这两个类以及如何在实际项目中运用它们。 ...

Global site tag (gtag.js) - Google Analytics