[英]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.