关于Quartz的一些疑问

<bean id="xxx.scheduler"
        class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
</bean>
@Component
public class QuartzScheduler {
  @Qualifier("xxx.scheduler")
  @Autowired
  Scheduler scheduler;

  @PostConstruct
  public void start() {
    try {
      scheduler.start();
    } catch (SchedulerException e) {
      log.error("", e);
    }
  }

}

定义的时候定义了SchedulerFactoryBean的id为"xxx.scheduler",为什么注入Scheduler的时候也可以用这个ID注入???

阅读 1.3k
1 个回答

以下仅为个人猜想:
发现你 id 类型和被注解属性类型不一致时,可能会做一些尝试:

Spring 发现你 id 绑定的是个 FactoryBean<T> 的实现,它会调用其 getObjectType 来检查这个工厂类返回的实例类型能否与被注解属性相匹配。

SchedulerFactoryBeanFactoryBean<T> 的实现类,它的 getObjectType 返回的就是 java.lang.Class<? extends Scheduler>

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题