繁体   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