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

对多个Bean使用Spring Boot 2.2.0's@Constructor绑定

秦才英
2023-03-14

因此,我对新的@ConstructorBinding功能感到非常兴奋,但我对它如何与@ConfigurationProperties交互有一个疑问。可以通过更改前缀来声明具有配置属性的相同类型的多个bean,例如:

    @Bean("myBean1")
    @ConfigurationProperties("foo.baz")
    MyBean myBean1(){
        return new MyBean();
    }

    @Bean("myBean2")
    @ConfigurationProperties("foo.bar")
    MyBean myBean2(){
        return new MyBean();
    }

但是据我从留档中所知,构造函数绑定方法需要您直接注释类型,这(我相信)必然会阻止您将一个类的多个实例注入配置属性。

这是期望得到支持的事情吗?它已经支持,我已经错过了什么吗?我认为理论上我可以用另一种类型包装构造函数绑定的类,但这似乎有点像黑客,如果可能的话,我宁愿避免它。

共有1个答案

商飞航
2023-03-14

正如在注释中所说,没有任何机制来创建@ConfigurationProperties组件的多个实例。我发现只有一个解决方案为@ConstructorBinding-对于类似的属性,我创建不同的类,继承基本属性类并定义自己的构造函数。我认为创建一个简单的类和构造函数不会花费太多的工作时间(尤其是如果你使用IDE)。

 类似资料:
  • Guice提供了一种使用toConstructor()方法与对象的特定构造函数创建绑定的方法。 @Override protected void configure() { try { bind(SpellChecker.class) .toConstructor(SpellCheckerImpl.class.getConstructor(String.clas

  • 这里的答案:https://stackoverflow.com/questions/7624895/how-to-use-log4j-with-multiple-classes#=是我找到的最好的答案。这已经是过去几年的想法了,现在有些事情已经不同了。 我的目标是在所有将消息打印到日志(控制台和文件)的java类中共享一个记录器。 我使用的是log4j2:http://logging.apache

  • 问题内容: 假设我有一个月,日和年选择。每个选择一个。现在,我需要将它们绑定到单个后备bean属性-java.util.Date。我如何实现目标? 问题答案: 三种方式: 通过三个getter和三个setter来返回或居中。 利用,但是这会有点麻烦。 利用第3方组件,例如。 编辑: 根据评论,这是选项2的样子。 : : : 请注意,没有,并且默认情况下是。因此,例如选择11月31日将产生12月1日

  • 尝试使用springboot MVC和Thymeleaf访问POST方法中的多个对象。 这是控制器。 下面是这些观点: patient.html 和result.html 和bean类是:PatientDataModel.java 另一个bean: 现在,问题是,我需要这两个bean在GET和POST方法中都可以访问。当我运行代码时,它正在执行,但是bean没有值,所有值都是空的。请建议

  • 问题内容: 我有一个看起来像的字符串,并且我想知道如何分隔参数,以便它们是两个不同的%s。我来自Java的想法是这样的: 但这不起作用,因此它在Python中的外观如何? 问题答案: 马克·西达德(Mark Cidade)的答案是正确的-您需要提供一个元组。 但是从Python 2.6起,您可以使用代替: 不再鼓励使用for格式化字符串。 这种字符串格式设置方法是Python 3.0中的新标准,应