Spring Boot EnvironmentAware未调用

时间:2016-12-14 13:10:26

标签: java spring spring-mvc spring-boot

我编写了一个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接口?

1 个答案:

答案 0 :(得分:0)

人们经常会在“配置”问题中陷入困境,一眼就能看出明显的躲避。

微米。 Deinum给了我明显的答案。在我的代码中,我试图访问稍后将设置的构造函数中的变量。当我将这些变量的初始化移动到另一个方法时,在使用环境变量之前调用了“setEnvironment()”方法。

由于