春豆属性 当@Configuration执行方法时,类中的 Map<StringPOJ>O@Bean 在类中可见,但在构造函数中不可见



有一个简单的@Configuration类:

@Data //setters and getters
@ComponentScan
@Configuration
@ConfigurationProperties(prefix = "some.prefix")
public class SomeAutoConfig {
public SomeAutoConfig(Map<String, Pojo> properties) {
this.properties= properties;
}
private final Map<String, Pojo> properties;
@Bean
String string() {
return "test string";
}
}

在调试时,我在构造函数上设置了断点。属性=属性)和@Bean方法(返回"测试字符串")。

我没有看到属性作为构造函数参数,但在@Bean方法中有可见的。

为什么只有看到属性?是我注入这个bean更好的好方法,也可以从构造函数访问?

这是因为Spring在构造函数执行和调用@Bean注释方法之间通过setter初始化该字段。我知道,没有直接的方法可以通过构造函数来做到这一点,你可以使用@Value("#{${some.prefix}}"),但这需要特别定义属性,即{key1:'value1',key2:'value2',....}

编辑:从Springboot 2.2开始,您可以利用@ConstructorBinding注释。

相关内容

  • 没有找到相关文章

最新更新