Springboot 如何關閉自動配置
Springboot 關閉自動配置
springboot通過@SpringBootApplication 下的@EnableAutoConfiguration 實現自動配置,節約瞭開發者大量時間,但是有可能有些不必要的配置。如果想關閉其中的某一項配置,那應該怎麼辦呢?
使用@SpringBootApplication下的exclude參數即可。
舉例說明:
1. 關閉Redis自動配置
@SpringBootApplication(exclude={RedisAutoConfiguration.class })
2. SpringBoot默認會自動配置數據庫
如果業務不需要 也可以可以在 pringBootApplication 註解中操作:
@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class, DataSourceTransactionManagerAutoConfiguration.class, HibernateJpaAutoConfiguration.class})
註:有多項配置時可以用逗號隔開
開啟關閉自動任務配置流程
1.需求
可以根據自己配置的開關,動態的控制springboot含有@Scheduled的定時任務
2.解決方案
1.刪除啟動類的 @EnableScheduling
2.利用condition進行條件判斷
public class SchedulerCondition implements Condition { @Override public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) { return Boolean.valueOf(context.getEnvironment().getProperty("com.myapp.config.scheduler.enabled")); //就是yml值 } }
3.進行新的定時任務裝配到IOC
@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(); } }
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。
推薦閱讀:
- SpringBoot使用@EnableAutoConfiguration實現自動配置詳解
- Spring自動配置之condition條件判斷上篇
- springboot定時任務@Scheduled執行多次的問題
- Spring自動配置之condition條件判斷下篇
- 關於@Scheduled註解的任務為什麼不執行的問題