假设我们具有以下代码安全性:

@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将无效。

10-06 13:44