簡體   English   中英

如何替換 ConditionalOnMissingBean bean?

[英]How to replace a ConditionalOnMissingBean bean?

我使用一個包含

public class MyFilter extends FilterParent { ... }

@Configuration
public class AutoConf
{
    @Bean
    @ConditionalOnMissingBean(FilterParent.class)
    public MyFilter myFilter ()
    {
        return new MyFilter (); //               <------- I want to replace this
    }
}

正確加載。 我無法更改此庫,但我想加載不同的過濾器 bean

我試過了

@Component
public class MyNewFilter extends MyFilter { ... }

並修改了應用程序類

@SpringBootApplication
public class Application
{
    public static void main (String[] args)
    {
        SpringApplication.run (Application.class, args);
    }

    @Bean
    public CommandLineRunner commandLineRunner (ApplicationContext ctx)
    {
        return args -> {
            // startup code
        };
    }

    @Bean
    public MyFilter myFilter ()
    {
        return new MyNewFilter (); //          <----------- THIS IS NEW
    }
}

但我仍然加載MyFilter而不是MyNewFilter

如何在不更改AutoConf情況下加載MyNewFilter bean 而不是AutoConf加載的MyFilter bean?

試試這個。

@SpringBootApplication
public class Application
{
  public static void main (String[] args)
  {
    SpringApplication.run (Application.class, args);
  }

  @Bean
  public CommandLineRunner commandLineRunner (ApplicationContext ctx)
  {
    return args -> {
        // startup code
    };
  }

  @Bean
  public MyNewFilter myFilter ()
  {
    return new MyNewFilter (); //          <----------- THIS IS NEW
  }
}

@chrylis-cautiouslyoptimistic- 是正確的,正在加載新組件。 由於無關的原因,應用程序行為異常。

我無法刪除帖子,所以我會在 2 天內接受這個。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM