由于缺乏Spring框架的知识,我遇到了一些困难,无法实现如何让它工作。我想做的很简单。我想在RestTemplateComponentconstructor或getRestTemplate方法中使用注入的AppProperties,但所有道具都为空。我想我明白为什么。。这是因为RestTemplateComponent按顺序首先加载,这就是AppProperties道具为空的原因。
有没有可能告诉Spring先加载AppProperties,以便在RestTemplateComponent中使用它。
顺便说一句,问题只发生在启动时,当我将它注入控制器时,并在请求使用这些对象时,并没有任何问题。
应用程序属性
integration.url=http://...
@Configuration
@ConstructorBinding
@ConfigurationProperties("integration")
public class AppProperties {
private String url;
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
}
@Component
public class RestTemplateComponent {
private final AppProperties appProperties;
public RestTemplateComponent(AppProperties appProperties) {
this.appProperties = appProperties;
}
@Bean
public RestTemplate getRestTemplate() {
RestTemplate restTemplate = new RestTemplate();
//Custom authorization
return restTemplate;
}
}
好的,最后我在AppProperties类中添加了注释@PropertySource({"classpath:application.properties"}(,然后当我尝试在SpringBootApplication中自动连接AppProperties时,我在调试中看到道具已初始化。