对多个Bean使用Spring Boot 2.2.0的@ConstructorBinding

时间:2019-11-19 23:38:38

标签: java spring-boot configurationproperties

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

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

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

但是,据我所知,构造函数绑定方法要求您直接注释类型,(我认为)必然使您无法向一个类的多个实例注入配置属性。

这是否有望得到支持?它已经受支持了,我已经缺少了什么吗?我认为从理论上讲,我可以将构造函数绑定的类包装为另一种类型,但这似乎有点破绽,我希望尽可能避免这种情况。

1 个答案:

答案 0 :(得分:1)

如评论中所述,没有任何机制可以创建@ConfigurationProperties组件的多个实例。我发现@ConstructorBinding仅有一个解决方法-对于类似的属性,我创建了不同的类,这些类继承了基础属性类并定义了自己的构造函数。我认为创建一个简单的类和构造函数不会花费太多的工作时间(尤其是在使用IDE的情况下)。