微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何替换 ConditionalOnMissingBean bean?

如何解决如何替换 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
    }
}

正确加载。我无法更改此库,但我想加载不同的过滤器

我试过了

@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

如何在不更改 MyNewFilter 的情况下加载 MyFilter bean 而不是 AutoConf 加载的 AutoConf 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 天内接受。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。