3 回答

TA貢獻1797條經驗 獲得超6個贊
@ConditionalOnMissingBean
將執行您的代碼,而您想要的是相反的-不執行。也許您應該嘗試混合使用@ConditionalOnClass
并@AutoConfigureAfter
在您發布的鏈接中的示例中提供。
我已經在一些與數據庫相關的 bean 和Conditional
s 的操作中使用過,并且AutoconfigureAfter
確實做到了這一點。只需要更好地了解您的應用程序,以便能夠提供更具體的建議

TA貢獻1880條經驗 獲得超4個贊
問題是您只能@ConditionalOnMissingBean
在自動配置上下文中使用。javadoc 說
該條件只能匹配到目前為止已被應用程序上下文處理的 bean 定義,因此,強烈建議僅在自動配置類上使用該條件
我試圖在常規應用程序中使用注釋。一旦我這樣做了(具體來說,將類添加到),它就可以通過使用來spring.factories
檢測@EnableWebMvc
@ConditionalOnMissingBean(WebMvcConfigurationSupport.class)

TA貢獻1829條經驗 獲得超4個贊
您需要確保@ConditionalOnMissingBean
帶注釋的 bean 創建將在創建后?WebMvcConfigurationSupport
發生。
來自 spring文檔,
當前 bean 所依賴的 beans。指定的任何 bean 都保證在該 bean 之前由容器創建。
除了此處解釋的之外,還使用@DependsOn
注釋。?@ConditionalOnMissingBean
并確保您在@configuration
帶注釋的類中執行這些操作。
@Configuration
public class Config {
? ? @Bean
? ? @DependsOn({"webMvcConfigurationSupport"})
? ? @ConditionalOnMissingBean(WebMvcConfigurationSupport.class)
? ? ?public FileProcessor fileProcessor(){
? ? ? ? return new FileProcessor();
? ? }
在此示例中,僅當缺少 webMvcConfigurationSupport bean 時才會創建 fileProcessor。
添加回答
舉報