如何替换ConditionalOnMissingBean Bean?

我使用一个库,其中包含

public class MyFilter extends FilterParent { ... }

and

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

它能正确加载。我不能改变这个库,但我想加载一个不同的过滤器豆。

我试着

@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,而不是 "MyFilter "bean?


StackOverflow:java - How to replace a ConditionalOnMissingBean bean? - Stack Overflow