我有以下Spring调度器配置类:
@Configuration
@EnableScheduling
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class SchedulerConfig implements SchedulingConfigurer {
@Override
public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
taskRegistrar.setScheduler(taskScheduler());
}
@Bean
public TaskScheduler taskScheduler() {
TaskScheduler taskScheduler= new ConcurrentTaskScheduler();
return taskScheduler;
}
}
我有另一个类
public class Sample
{
@Autowired
TaskScheduler taskScheduler
}
是来自"Sample"taskregistry . setscheduler (taskScheduler());"课吗?taskScheduler()调用返回的实例与注入到"样本"中的对象不同。课吗?
如果是这样,我们如何确保在项目中只有一个TaskScheduler的实例?我尝试了单例作用域,但仍然不确定它是否确保相同的对象。
Spring bean是单例的,你可以在其他类中使用@Autowired或通过构造函数注入它们,正如你所做的,Spring确保总是与注入的实例相同,所以回答你的问题是的,它是单例的。
你可以在文档中看到:https://docs.spring.io/spring-framework/docs/3.0.0.M3/reference/html/ch04s04.html?
单例作用域是Spring的默认作用域。