问题描述
在out项目中,我们不使用setter或filed注入,我们只使用构造函数注入,我知道选项1.和2.都可以。
或者spring boot 2+做了一些东西,我应该更好地使用选项1。而不是2。我无法想象选项1会出错的情况
@Component
@ConfigurationProperties("config")
public class ServiceConfigProperties {
// .... some code
}
- 会不安全吗? - 但它看起来更好
@Component
public class Service {
private boolean skipCheck;
public Service(ServiceConfigProperties configProps) {
this.skipCheck = configProps.isSkipCheck();
}
}
- 不能不安全吗?
@Component
public class Service {
private boolean skipCheck;
private ServiceConfigProperties configProps;
public Service(ServiceConfigProperties configProps) {
this.configProps= configProps;
}
@postconstruct
public void initConfig() {
this.skipCheck= configProps.isSkipCheck();
}
}
解决方法
使用 a couple of caveats,在构造函数中与构造函数注入的 bean 交互是完全安全的。