Spring Boot @Scheduled方法创建@Scope(request)的实例

问题描述 投票:1回答:1

我在使用弹簧示波器时遇到了问题。我确定我的解决方案不是最佳解决方案,但是我不知道一种更好的方法。你有什么建议吗?

有我的问题:

我需要什么:

我正在尝试执行与@RESTController映射方法相同的操作,但要定期在后台进行,而无需任何用户http / s调用。

我有什么:

当前,我有一些@Service类的范围为@Scope(REQUEST)@RestController正在从http / s调用中进行调用。

我在想什么

我用@Component方法创建了一个新的@Scheduled类,该方法试图调用范围为@Service@Scope(REQUEST)

我的问题:

@Scheduled方法不能使用REQUEST范围内的@Service,因为它们不在请求范围内,并且很难将所有相关服务更改为该操作。

谢谢!

java spring spring-boot scope spring-scheduled
1个回答
1
投票

因此,这意味着为请求创建了服务的实例,但是如果没有请求,那么就不会有bean实例。您不能为计划的作业创建一个单独的bean实例吗?

基本上从您的服务类中删除@Service并创建一个配置文件

@Configuration
class FooServiceConfiguration {

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

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

然后从请求流程中使用的任何位置自动连接requestFooService,并从计划的作业中自动连接chedchedFooService。

© www.soinside.com 2019 - 2024. All rights reserved.