С профилями Spring 3.1 это будет действительно легко, но вот способ, которым вы можете сделать это в Spring 3.0.
В вашем контексте:
<task:annotation-driven executor="taskExecutor" scheduler="configScheduler"/>
<task:scheduler id="taskScheduler"/>
<task:executor id="taskExecutor"/>
Используйте @Bean
дляопределить configScheduler
, используя фиктивный планировщик, если установлено системное свойство noScheduler
.
@Configuration
public class SchedulerConfig {
@Resource(name="taskScheduler")
ThreadPoolTaskScheduler taskScheduler;
@Bean
ThreadPoolTaskScheduler configScheduler() {
ThreadPoolTaskScheduler scheduler =
System.getProperty("noScheduler") == null : taskScheduler ?
new ThreadPoolTaskScheduler() {
@Override public ScheduledFuture schedule(Runnable task, Trigger trigger) { return null; } // Cron
@Override public ScheduledFuture scheduleAtFixedRate(Runnable task, long period) { return null; }
@Override public ScheduledFuture scheduleWithFixedDelay(Runnable task, long delay) { return null; }
};
return scheduler;
}
}