我编写了一个Spring Boot应用程序,其中有几个类正在实现EnvironmentAware
接口。
在加载EnvironmentAware.setEnvironment()
类时调用ApplicationConfiguration
方法,但在其他类中实现时不会调用它。 (我写了另一个应用程序,它的工作原理和配置方式与我有这个应用程序的方式相同。)
我实现EnvironmentAware
界面的另一个类看起来像:
@Component("merchandisingMasterDataItemsProxy")
@Scope("singleton")
@Configurable
public class MerchandisingMasterDataItemsProxy extends BaseProxy implements EnvironmentAware {
private HttpHeaders httpHeaders;
private String base_url;
@Override
// THIS NEVER GETS CALLED
public void setEnvironment(Environment environment) {
this.environment = environment;
}
@Autowired
public MerchandisingMasterDataItemsProxy(RestTemplate restTemplateMerchandisingItems) {
super(restTemplateMerchandisingItems);
// ENVIRONMENT IS NULL HERE :(
this.base_url = environment.getProperty(BaseConfig.VCAP_ENVIRONMENT_BASE + "merchandising.items.base_url");
httpHeaders = new HttpHeaders();
httpHeaders.setAccept(Arrays.asList(MediaType.APPLICATION_JSON));
httpHeaders.setContentType(MediaType.TEXT_PLAIN);
}
是否有任何特殊注释或我需要做些什么来实现EnvironmentAware
接口?
答案 0 :(得分:0)
人们经常会在“配置”问题中陷入困境,一眼就能看出明显的躲避。
微米。 Deinum给了我明显的答案。在我的代码中,我试图访问稍后将设置的构造函数中的变量。当我将这些变量的初始化移动到另一个方法时,在使用环境变量之前调用了“setEnvironment()”方法。
由于