假设,我们对代码的要求如下:
@ConditionalOnProperty
@EnableScheduling
注释仅启用\禁用@EnableCaching
还是对today
产生影响?
在文档中找不到答案。
答案 0 :(得分:1)
在类上使用诸如@ConditionalOnProperty
之类的条件时,它控制是否处理整个类。在@Bean
方法上使用它时,它控制是否处理单个方法。
在您的特定示例中,如果条件匹配,AcmeServiceApplication
将被处理,因此将启用计划和缓存,并且@SpringBootApplication
将通过启用自动配置和组件扫描而生效。如果条件不匹配,AcmeServiceApplication
将不会被处理,因此既不会启用调度,也不会启用缓存,并且@SpringBootApplication
将无效。
答案 1 :(得分:1)
@ConditionalOnProperty
on @SpringBootApplication
makes no sense and won't be processed. Regardless of scheduling.enable
property presence @EnableScheduling
and @EnableCaching
will be applied.
As Andy Wilkinson explained @ConditionalOnProperty
is target for @Configuration
and @Bean
targets. @SpringBootApplication
is something else entirely.