当前位置: 首页 > 知识库问答 >
问题:

@ConditionalOnMissingBean不能被覆盖

慕容坚
2023-03-14

我正在使用Spring Boot 2.1.6.RELEASE,我想知道应该如何使用@ConditionalOnMissingBean

配置示例:

@Configuration
public class MyAutoConfiguration {

  @Bean
  @ConditionalOnMissingBean
  public Foo foo() {
    return new Foo();
  }
}
@Configuration
@Import(MyAutoConfiguration.class)
public class AppConfiguration {

  @Bean
  public Foo foo() {
    return new Foo("some property");
  }
}

AppConfiguration(应用程序配置)。类MyAutoConfiguration。类位于不同的模块中。

错误:

无法注册在类路径资源[com/example/autoconf/configuration/app configuration . class]中定义的bean“foo”。已在类路径资源[com/my/configuration/myautoconfiguration . class]中定义了具有该名称的bean,并且禁用了覆盖。

如何在不设置< code > spring . main . allow-bean-definition-overriding = true 属性的情况下使用< code > @ conditionalomissingbean ?

共有1个答案

司马高昂
2023-03-14

要使MyAutoConfiguration被Spring Boot选为自动配置,需要在META-INF/Spring中声明。工厂如下

org.springframework.boot.autoconfigure.EnableAutoConfiguration=x.y.z.MyAutoConfiguration 

有关自定义自动配置的更多详细信息,请查看此处。

 类似资料:
  • 问题内容: 看一个简单的例子: 正如您在JSfiddle上的演示中所看到的那样,SPAN元素将覆盖其祖先ANCHOR元素的和属性值。但是,由于某些原因该属性不会被覆盖。 我假设某些CSS属性可以被祖先元素覆盖,而其他一些CSS属性则不能。 是这样吗?如果是的话,我怎么知道哪些可以被覆盖,哪些不能被覆盖? 问题答案: 从[规格]: 后代元素的“文本装饰”属性对祖先的装饰没有任何影响。 进一步引用(不

  • 我试图为我的评估做一个要求,即“在某种形式上,如果用户上传1个或多个图像,这些图像和其他输入信息需要存储在数据库中。如果用户选择不上传任何图像,其他输入信息需要存储在数据库中。” 这是我用我的方式做时得到的结果但它并不完美 警告:文件\u get\u contents():第178行C:\xampp\htdocs\WEB Assignment\phpserver.php中的文件名不能为空 这就是我

  • 问题内容: 我知道python函数默认是虚拟的。假设我有这个: 我不希望他们能够这样做: 有没有办法防止用户重载roo()? 问题答案: 您可以使用元类: 每当创建子类时,就会调用该元类型的 new 。如果您在场,这将导致错误。仅当没有基类时,它才会接受roo的定义。 您可以通过使用注释来声明哪些方法是最终方法,从而使该方法更加理想。然后,您需要检查所有基准并计算所有最终方法,以查看是否有任何基准

  • 您是否曾被测试覆盖度量引入歧途? 测试覆盖工具对单元测试具有重要的意义,但是经常被误用。这个月,Andrew Glover 会在他的新系列 —— 追求代码质量 中向您介绍值得参考的专家意见。第一部分深入地介绍覆盖报告中数字的真实含义。然后他会提出您可以尽早并经常地利用覆盖来确保代码质量的三个方法。 您还记得以前大多数开发人员是如何追求代码质量的吗。在那时,有技巧地放置 main() 方法被视为灵活

  • 在我的Spring应用程序中,我定义了类型的bean。 DefaultListableBeanFactory日志 信息10140---[main]o.s.b.f.s.DefaultListableBeanFactory:用不同的定义重写bean“Audit Listener”的bean定义:用[Root bean:class[demo.auditListener];scope=singleton;

  • 我用如下命令创建项目 npm init vue@latest 创建过程中选择了pinia,但是main.js中导入pinia模块时不能被识别: import { createPinia } from 'pinia' 这句里面的pinia和Pinia均提示为“Unknown word”.