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。

推薦閱讀: