我在使用弹簧示波器时遇到了问题。我确定我的解决方案不是最佳解决方案,但是我不知道一种更好的方法。你有什么建议吗?
有我的问题:
我需要什么:
我正在尝试执行与@RESTController
映射方法相同的操作,但要定期在后台进行,而无需任何用户http / s调用。
我有什么:
当前,我有一些@Service
类的范围为@Scope(REQUEST)
,@RestController
正在从http / s调用中进行调用。
我在想什么
我用@Component
方法创建了一个新的@Scheduled
类,该方法试图调用范围为@Service
的@Scope(REQUEST)
。
我的问题:
@Scheduled
方法不能使用REQUEST
范围内的@Service
,因为它们不在请求范围内,并且很难将所有相关服务更改为该操作。
谢谢!
因此,这意味着为请求创建了服务的实例,但是如果没有请求,那么就不会有bean实例。您不能为计划的作业创建一个单独的bean实例吗?
基本上从您的服务类中删除@Service并创建一个配置文件
@Configuration
class FooServiceConfiguration {
@Bean
@RequestScope
FooService requestFooService(){
return new FooService()
}
@Bean
FooService scheduledFooService(){
return new FooService()
}
}
然后从请求流程中使用的任何位置自动连接requestFooService,并从计划的作业中自动连接chedchedFooService。