Is there a way to make @EnableScheduling conditional based on an application property? also is it possible to disable controllers based on properties too?
What I\'m tryi
I Solved this, here is what I did for future reference:
-
@Configuration
public class Scheduler {
@Conditional(SchedulerCondition.class)
@Bean(name = TaskManagementConfigUtils.SCHEDULED_ANNOTATION_PROCESSOR_BEAN_NAME)
@Role(BeanDefinition.ROLE_INFRASTRUCTURE)
public ScheduledAnnotationBeanPostProcessor scheduledAnnotationProcessor() {
return new ScheduledAnnotationBeanPostProcessor();
}
}
And the conditional class
public class SchedulerCondition implements Condition {
@Override
public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
return Boolean.valueOf(context.getEnvironment().getProperty("com.myapp.config.scheduler.enabled"));
}
}
Also, to disable web server on the backend server, just add the following to the application.properties file:
spring.main.web_environment=false