Recently I've discovered unpleasant side effect of org.springframework.scheduling.quartz.SchedulerFactoryBean which results to instable behaviour. It implements FactoryBean interface, so by default if you reference it in your context it returns Scheduler instance instead of the factory itself. But Scheduler instance creation is triggered by SchedulerFactoryBean.afterPropertiesSet(), and factory can't return Scheduler at all until it has been fully initialized.

See the point? Suppose we have some cyclic reference in the context and SchedulerFactoryBean relies on some other beans (for example, they may be needed for initial state configuration), and some of those other beans relies on scheduler in order to do some job later. Now if other beans happen to be created earlier then SchedulerFactoryBean (though, maybe not fully initialized) then everything works fine - half-ready beans are injected in SchedulerFactoryBean. But if scheduler factory gets created first then it tries to initialize another beans, which in they turn try to get Scheduler instance - and bang!!

org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name 'quartzScheduler': FactoryBean which is currently in creation returned null from getObject
This was in Spring 3.1

So, beware of this problem and avoid including SchedulerFactoryBean in cyclic references.