Spring启动确保TaskScheduler的单例实例



我有以下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的默认作用域。

最新更新