程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Spring Boot 2.1 Bean Override vs.Primary大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决Spring Boot 2.1 Bean Override vs.PriMary

开发过程中遇到Spring Boot 2.1 Bean Override vs.PriMary的问题如何解决?下面主要结合日常开发的经验,给出你关于Spring Boot 2.1 Bean Override vs.PriMary的解决方法建议,希望对你解决Spring Boot 2.1 Bean Override vs.PriMary有所启发或帮助;

覆盖bean意味着在上下文中可能只有一个具有唯一名称或ID的bean。因此,您可以通过以下方式提供两个bean:

package com.stackoverflow.foo;
@Configuration
public class BaseConfiguration {
   @Bean
   @Lazy
   public B@R_450_9260@ce b@R_450_9260@ce1() {
       return new B@R_450_9260@ce();
   }
}

package com.stackoverflow.bar;
@Configuration
@import({BaseConfiguration.class})
public class TESTConfiguration {
    @Bean
    public B@R_450_9260@ce b@R_450_9260@ce2() {
        return mockito.mock(B@R_450_9260@ce.class);
    }
}

如果添加,@PriMary则默认情况下将在以下位置注入主bean:

@autowired
B@R_450_9260@ce b@R_450_9260@ce;

解决方法

在Spring Boot 2.1中,默认情况下禁用Bean覆盖,这是一件好事。

但是我确实有一些测试,其中我使用mockito用模拟的实例替换了bean。使用默认设置时,具有此类配置的测试将由于Bean覆盖而失败。

我发现可行的唯一方法是通过应用程序属性启用bean覆盖:

spring.main.allow-bean-definition-overriding=true

但是,我真的很想确保为我的测试配置设置最少的bean定义,这将由spring在禁用覆盖的情况下指出。

我要覆盖的bean要么是

  • 在导入我的测试配置的另一个配置中定义
  • 通过注释扫描自动发现bean

我一直认为应该在覆盖Bean的测试配置中起作用并对其进行拍击@PriMary,因为我们习惯于数据源配置。但是,这没有效果,让我感到奇怪:@PriMary和禁用的Bean覆盖是否矛盾?

一些例子:

package com.stackoverflow.foo;
@@R_450_9260@ce
public class A@R_450_9260@ce {
}

package com.stackoverflow.foo;
public class B@R_450_9260@ce {
}

package com.stackoverflow.foo;
@Configuration
public BaseConfiguration {
    @Bean
    @Lazy
    public B@R_450_9260@ce b@R_450_9260@ce() {
        return new B@R_450_9260@ce();
    }
}

package com.stackoverflow.bar;
@Configuration
@Import({BaseConfiguration.class})
public class TESTConfiguration {
    @Bean
    public B@R_450_9260@ce b@R_450_9260@ce() {
        return mockito.mock(B@R_450_9260@ce.class);
    }
}

大佬总结

以上是大佬教程为你收集整理的Spring Boot 2.1 Bean Override vs.Primary全部内容,希望文章能够帮你解决Spring Boot 2.1 Bean Override vs.Primary所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:2.1vs.Primary