簡體   English   中英

Spring Boot @Scheduled 方法創建 @Scope(request) 的實例

[英]Spring Boot @Scheduled method create instance of @Scope(request)

我的彈簧鏡有問題。 我確信我的解決方案不是最佳的,但我不知道更好的方法來做到這一點。 你有什么建議嗎?

有我的問題:

我需要的:

我正在嘗試執行與@RESTController映射方法相同的操作,但在后台定期執行,沒有任何用戶 http/s 調用。

我擁有的:

目前,我有一些@Service類的范圍為@Scope(REQUEST)@Service @RestController正在從 http/s 調用中調用。

我在嘗試什么

我創建了一個新的@Component類,其中包含一個@Scheduled方法,該方法試圖調用范圍為@Scope(REQUEST)@Service

我的問題:

@Scheduled方法不能使用REQUEST范圍內的@Service因為它們不在請求范圍內,而且很難將所有相關服務更改為該操作。

謝謝!

所以這意味着為請求創建了一個服務實例,但如果沒有請求,則沒有 bean 實例。 你不能為你的預定作業創建一個單獨的 bean 實例嗎?

基本上從您的服務類中刪除 @Service 並創建一個配置文件

@Configuration
class FooServiceConfiguration {

    @Bean
    @RequestScope
    FooService requestFooService(){
        return new FooService()
    }

    @Bean
    FooService scheduledFooService(){
        return new FooService()
    }
}

然后從請求流中使用的任何地方自動裝配 requestFooService 並從您的計划作業自動裝配 scheduleFooService 。

暫無
暫無

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

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