Springboot 关闭自动配置
springboot通过@SpringBootApplication 下的@EnableAutoConfiguration 实现自动配置,节约了开发者大量时间,但是有可能有些不必要的配置。如果想关闭其中的某一项配置,那应该怎么办呢?
使用@SpringBootApplication下的exclude参数即可。
举例说明:
1. 关闭Redis自动配置
1
|
@SpringBootApplication (exclude={RedisAutoConfiguration. class })
|
2. SpringBoot默认会自动配置数据库
如果业务不需要 也可以可以在 pringBootApplication 注解中操作:
1
2
3
4
|
@SpringBootApplication (exclude = {
DataSourceAutoConfiguration. class ,
DataSourceTransactionManagerAutoConfiguration. class ,
HibernateJpaAutoConfiguration. class })
|
注:有多项配置时可以用逗号隔开
开启关闭自动任务配置流程
1.需求
可以根据自己配置的开关,动态的控制springboot含有@Scheduled的定时任务
2.解决方案
1.删除启动类的 @EnableScheduling
2.利用condition进行条件判断
1
2
3
4
5
6
|
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
1
2
3
4
5
6
7
8
9
|
@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();
}
}
|
以上为个人经验,希望能给大家一个参考,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/qq_24676389/article/details/82777491