XmlWebApplicationContext的弹簧设置字段环境的时间是什么时候?

时间:2016-02-16 08:04:17

标签: java spring spring-mvc

我是spring framwork 4.2.0.RELEASE源代码的新读者。当我在运行时逐步执行每行代码时,我会进入 org.springframework.web.context.ContextLoaderListener

功能 configureAndRefreshWebApplicationContext 是:

protected void configureAndRefreshWebApplicationContext(ConfigurableWebApplicationContext wac, ServletContext sc) {
    if (ObjectUtils.identityToString(wac).equals(wac.getId())) {
        String idParam = sc.getInitParameter(CONTEXT_ID_PARAM);
        if (idParam != null) {
            wac.setId(idParam);
        }
        else {
            wac.setId(ConfigurableWebApplicationContext.APPLICATION_CONTEXT_ID_PREFIX +
                    ObjectUtils.getDisplayString(sc.getContextPath()));
        }
    }

    wac.setServletContext(sc);
    String configLocationParam = sc.getInitParameter(CONFIG_LOCATION_PARAM);
    if (configLocationParam != null) {
        wac.setConfigLocation(configLocationParam);
    }

    ConfigurableEnvironment env = wac.getEnvironment();
    if (env instanceof ConfigurableWebEnvironment) {
        ((ConfigurableWebEnvironment) env).initPropertySources(sc, null);
    }

    customizeContext(sc, wac);
    wac.refresh();
}

然而 ConfigurableEnvironment env = wac.getEnvironment()这一行让我很困惑。函数 getEnvironment 是:

@Override
public ConfigurableEnvironment getEnvironment() {
    if (this.environment == null) {
        this.environment = createEnvironment();
    }
    return this.environment;
}

当我遵循此代码时,我发现 environment!= null ,但我不知道春天何时以及如何设置环境?

0 个答案:

没有答案