2016-12-14 69 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()”方法。

感谢