@ConditionalOnProperty:仅对下面指定的注释有影响吗?

时间:2018-11-16 21:13:59

标签: java spring spring-boot annotations

假设,我们对代码的要求如下:

@ConditionalOnProperty

@EnableScheduling注释仅启用\禁用@EnableCaching还是对today产生影响?

在文档中找不到答案。

2 个答案:

答案 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.