簡體   English   中英

Spring @Scheduled fixedRate給出奇怪的結果?

[英]Spring @Scheduled fixedRate giving odd results?

我需要定期運行任務,因此我查找了@Scheduled批注。

我使用以下代碼:

public class MyTask {
    @Scheduled(fixedRate = 2000L)
    public void testScheduling() {
        System.out.println("Run Me ~ " + System.currentTimeMillis());
    }
}

我得到以下輸出:

Run Me ~ 1419859820512
Run Me ~ 1419859821671
Run Me ~ 1419859822512
Run Me ~ 1419859823670
Run Me ~ 1419859824512
Run Me ~ 1419859825671
Run Me ~ 1419859826513
Run Me ~ 1419859827670
Run Me ~ 1419859828513
Run Me ~ 1419859829671
Run Me ~ 1419859830513

我不明白為什么是大約1100毫秒和900毫秒而不是2000毫秒。 除了將其乘以2之外,我還能做些什么來解決此問題? 奇怪的是這是不可預測的。

編輯:評論者是對的:

System.out.println("Run Me (" + this.hashCode() + ") ~ " + System.currentTimeMillis());

給我

Run Me (1315556362) ~ 1419863164220
Run Me (410352054) ~ 1419863164540
Run Me (1315556362) ~ 1419863166221
Run Me (410352054) ~ 1419863166540

因此,我必須弄清楚為什么有兩個bean實例。

編輯:出於某種原因,有兩個Web應用程序初始化程序,一個是webappinitializer,另一個是安全初始化程序

public class BackendWebAppInitializer implements WebApplicationInitializer {
    ....
}

public class SecurityWebApplicationInitializer extends
        AbstractSecurityWebApplicationInitializer {

    public SecurityWebApplicationInitializer() {
        super(WebSecurityConfig.class);
    }
}

由於某些原因,由於這兩個初始化程序的緣故,啟動了兩個實例。 不知道該怎么辦。

我似乎已經找到了雙重實例化問題的原因。 如下。

我們有以下兩個主要配置:

public class SecurityWebApplicationInitializer extends
        AbstractSecurityWebApplicationInitializer {

    public SecurityWebApplicationInitializer() {
        super(WebSecurityConfig.class);
    }
}

@Configuration
@ComponentScan({ ... })
@EnableWebMvc
@ImportResource({ "classpath:spring-config.xml" })
public class ApplicationConfig {

}

但是顯然,此設置兩次實例化了Application Context。 解決方案如下:

public class SecurityWebApplicationInitializer extends
        AbstractSecurityWebApplicationInitializer {

    public SecurityWebApplicationInitializer() {
        //super(WebSecurityConfig.class);
    }
}

@Configuration
@ComponentScan({ ... })
@EnableWebMvc
@ImportResource({ "classpath:spring-config.xml" })
@Import({WebSecurityConfig.class})
public class ApplicationConfig {

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM