代码之家  ›  专栏  ›  技术社区  ›  OhleC

@构造函数绑定在SpringBoot2.5.4中似乎不起作用

  •  0
  • OhleC  · 技术社区  · 5 年前

    @Configuration
    @ConfigurationProperties("test")
    public class Config {
        public final String foo;
        
        @ConstructorBinding
        public Config(String foo) {
            this.foo = foo;
        }
    }
    

    application.yml:

    test:
      foo: bar
    

    主要类别:

    @SpringBootApplication
    @ConfigurationPropertiesScan
    public class Application implements CommandLineRunner {
        @Autowired Config config;
        public Application(Config config) {
            this.config = config;
        }
    
        public static void main(String[] args) { SpringApplication.run(Application.class, args); }
    
        @Override
        public void run(String... args) {
            System.out.println(config.foo);
        }
    }
    

    我希望它开始打印“bar”。然而,它并没有从

    Parameter 0 of constructor in Config required a bean of type 'java.lang.String' that could not be found.
    

    当我移除 @ConstructorBinding 并添加一个setter和nullary构造函数,它就可以工作了。

    1 回复  |  直到 5 年前
        1
  •  1
  •   ray    5 年前

    添加 @ConstructorBinding @Configuration 注释。这样地,

    @ConstructorBinding
    @ConfigurationProperties("test")
    public class Config {
        public final String foo;
        
        public Config(String foo) {
            this.foo = foo;
        }
    }
    
    推荐文章