2016-12-14 80 views
0

我寫了一個Spring Boot應用程序,其中有幾個類正在實現EnvironmentAware接口。Spring Boot EnvironmentAware不叫

方法在加載時正在調用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

Ofcourse它是'在構造......應如何設定器,它甚至還不存在的對象上稱爲null'。 –

+0

如何標記問題解決? @ M.Deinum ...解決了這個問題.... –

+0

你可以刪除自己的問題 – Tom

回答

0

人們經常被這樣的「配置」問題籠罩在一起,盲目地瞥見明顯的逃逸。

M. Deinum給了我一個明顯的答案。在我的代碼中,我試圖訪問將在稍後設置的構造函數中的變量。當我將這些變量的初始化移動到另一個方法時,在使用環境變量之前調用了「setEnvironment()」方法。

感謝