假设我们具有以下代码安全性:
@SpringBootApplication
@ConditionalOnProperty(value = "scheduling.enable")
@EnableScheduling
@EnableCaching
public class AcmeServiceApplication {
public static void main(String[] args) {
SpringApplication.run(AcmeServiceApplication.class, args);
}
}
@ConditionalOnProperty
注释是否仅启用/禁用@EnableScheduling
或也会对@EnableCaching
产生影响?在文档中找不到答案。
最佳答案
当在类上使用诸如@ConditionalOnProperty
之类的条件时,它将控制是否处理整个类。在@Bean
方法上使用它时,它控制是否处理单个方法。
对于您的特定示例,如果条件匹配,将处理AcmeServiceApplication
,因此将启用计划和缓存,并且@SpringBootApplication
将通过启用自动配置和组件扫描而生效。如果条件不匹配,将不处理AcmeServiceApplication
,因此既不会启用调度也不会缓存,并且@SpringBootApplication
将无效。