java类org.springframework.web.context.support.AbstractRefreshableWebApplicationContext的实例源码

SpringContextInitializerListener.java 文件源码 项目:cosmo 阅读 15 收藏 0 点赞 0 评论 0
@Override
public void contextInitialized(ServletContextEvent sce) {
    try {
        AbstractRefreshableWebApplicationContext wac = (AbstractRefreshableWebApplicationContext) WebApplicationContextUtils
                .getWebApplicationContext(sce.getServletContext());
        if (wac == null) {
            contextLoader = new ContextLoader();
            createSpringApplicationContext(sce.getServletContext());
        } else {
            WebApplicationContextHolder.set(wac);
            enhanceExistingSpringWebApplicationContext(sce, wac);
        }
    } catch (Exception t) {
        LOGGER.error("Exception occured", t);
    }
}
SpringContextInitializerListener.java 文件源码 项目:cosmo 阅读 15 收藏 0 点赞 0 评论 0
private void enhanceExistingSpringWebApplicationContext(ServletContextEvent sce, WebApplicationContext wac) {

    LOGGER.info("Enhancing existing Spring application context...");

    String cosmoContextLocation = sce.getServletContext().getInitParameter(CONTEXT_PARAM_NAME);

    @SuppressWarnings("resource")
    GenericXmlApplicationContext cosmoAppCtxt = new GenericXmlApplicationContext();
    cosmoAppCtxt.setEnvironment((ConfigurableEnvironment) wac.getEnvironment());
    cosmoAppCtxt.load(cosmoContextLocation);
    cosmoAppCtxt.refresh();
    cosmoAppCtxt.start();

    //make beans that are required from web components (as delegating filter proxy) accesible
    ((AbstractRefreshableWebApplicationContext)wac).getBeanFactory().setParentBeanFactory(cosmoAppCtxt.getBeanFactory());
    LOGGER.info("Enhanced existing Spring application context started");
}
EnvironmentSystemIntegrationTests.java 文件源码 项目:spring4-understanding 阅读 22 收藏 0 点赞 0 评论 0
@Test
public void xmlWebApplicationContext() {
    AbstractRefreshableWebApplicationContext ctx = new XmlWebApplicationContext();
    ctx.setConfigLocation("classpath:" + XML_PATH);
    ctx.setEnvironment(prodWebEnv);
    ctx.refresh();

    assertHasEnvironment(ctx, prodWebEnv);
    assertEnvironmentBeanRegistered(ctx);
    assertEnvironmentAwareInvoked(ctx, prodWebEnv);
    assertThat(ctx.containsBean(DEV_BEAN_NAME), is(false));
    assertThat(ctx.containsBean(PROD_BEAN_NAME), is(true));
}
SdcctWebApplicationContext.java 文件源码 项目:sdcct 阅读 23 收藏 0 点赞 0 评论 0
@Override
protected void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) {
    SdcctServletConfig servletConfig = new SdcctServletConfig();
    this.setServletConfig(servletConfig);

    beanFactory.registerSingleton(AbstractRefreshableWebApplicationContext.SERVLET_CONFIG_BEAN_NAME, servletConfig);
    beanFactory.ignoreDependencyInterface(ServletConfigAware.class);

    super.postProcessBeanFactory(beanFactory);
}
CrigttWebApplicationContext.java 文件源码 项目:crigtt 阅读 18 收藏 0 点赞 0 评论 0
@Override
protected void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) {
    CrigttServletConfig servletConfig = new CrigttServletConfig();
    this.setServletConfig(servletConfig);

    beanFactory.registerSingleton(AbstractRefreshableWebApplicationContext.SERVLET_CONFIG_BEAN_NAME, servletConfig);
    beanFactory.ignoreDependencyInterface(ServletConfigAware.class);

    super.postProcessBeanFactory(beanFactory);
}
EnvironmentIntegrationTests.java 文件源码 项目:class-guard 阅读 25 收藏 0 点赞 0 评论 0
@Test
public void xmlWebApplicationContext() {
    AbstractRefreshableWebApplicationContext ctx = new XmlWebApplicationContext();
    ctx.setConfigLocation("classpath:" + XML_PATH);
    ctx.setEnvironment(prodWebEnv);
    ctx.refresh();

    assertHasEnvironment(ctx, prodWebEnv);
    assertEnvironmentBeanRegistered(ctx);
    assertEnvironmentAwareInvoked(ctx, prodWebEnv);
    assertThat(ctx.containsBean(DEV_BEAN_NAME), is(false));
    assertThat(ctx.containsBean(PROD_BEAN_NAME), is(true));
}
EnvironmentSystemIntegrationTests.java 文件源码 项目:spring4-understanding 阅读 25 收藏 0 点赞 0 评论 0
@Test
public void registerServletParamPropertySources_AbstractRefreshableWebApplicationContext() {
    MockServletContext servletContext = new MockServletContext();
    servletContext.addInitParameter("pCommon", "pCommonContextValue");
    servletContext.addInitParameter("pContext1", "pContext1Value");

    MockServletConfig servletConfig = new MockServletConfig(servletContext);
    servletConfig.addInitParameter("pCommon", "pCommonConfigValue");
    servletConfig.addInitParameter("pConfig1", "pConfig1Value");

    AbstractRefreshableWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();
    ctx.setConfigLocation(EnvironmentAwareBean.class.getName());
    ctx.setServletConfig(servletConfig);
    ctx.refresh();

    ConfigurableEnvironment environment = ctx.getEnvironment();
    assertThat(environment, instanceOf(StandardServletEnvironment.class));
    MutablePropertySources propertySources = environment.getPropertySources();
    assertThat(propertySources.contains(StandardServletEnvironment.SERVLET_CONTEXT_PROPERTY_SOURCE_NAME), is(true));
    assertThat(propertySources.contains(StandardServletEnvironment.SERVLET_CONFIG_PROPERTY_SOURCE_NAME), is(true));

    // ServletConfig gets precedence
    assertThat(environment.getProperty("pCommon"), is("pCommonConfigValue"));
    assertThat(propertySources.precedenceOf(PropertySource.named(StandardServletEnvironment.SERVLET_CONFIG_PROPERTY_SOURCE_NAME)),
            lessThan(propertySources.precedenceOf(PropertySource.named(StandardServletEnvironment.SERVLET_CONTEXT_PROPERTY_SOURCE_NAME))));

    // but all params are available
    assertThat(environment.getProperty("pContext1"), is("pContext1Value"));
    assertThat(environment.getProperty("pConfig1"), is("pConfig1Value"));

    // Servlet* PropertySources have precedence over System* PropertySources
    assertThat(propertySources.precedenceOf(PropertySource.named(StandardServletEnvironment.SERVLET_CONFIG_PROPERTY_SOURCE_NAME)),
            lessThan(propertySources.precedenceOf(PropertySource.named(StandardEnvironment.SYSTEM_PROPERTIES_PROPERTY_SOURCE_NAME))));

    // Replace system properties with a mock property source for convenience
    MockPropertySource mockSystemProperties = new MockPropertySource(StandardEnvironment.SYSTEM_PROPERTIES_PROPERTY_SOURCE_NAME);
    mockSystemProperties.setProperty("pCommon", "pCommonSysPropsValue");
    mockSystemProperties.setProperty("pSysProps1", "pSysProps1Value");
    propertySources.replace(StandardEnvironment.SYSTEM_PROPERTIES_PROPERTY_SOURCE_NAME, mockSystemProperties);

    // assert that servletconfig params resolve with higher precedence than sysprops
    assertThat(environment.getProperty("pCommon"), is("pCommonConfigValue"));
    assertThat(environment.getProperty("pSysProps1"), is("pSysProps1Value"));
}
EnvironmentIntegrationTests.java 文件源码 项目:class-guard 阅读 20 收藏 0 点赞 0 评论 0
@Test
public void registerServletParamPropertySources_AbstractRefreshableWebApplicationContext() {
    MockServletContext servletContext = new MockServletContext();
    servletContext.addInitParameter("pCommon", "pCommonContextValue");
    servletContext.addInitParameter("pContext1", "pContext1Value");

    MockServletConfig servletConfig = new MockServletConfig(servletContext);
    servletConfig.addInitParameter("pCommon", "pCommonConfigValue");
    servletConfig.addInitParameter("pConfig1", "pConfig1Value");

    AbstractRefreshableWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();
    ctx.setConfigLocation(EnvironmentAwareBean.class.getName());
    ctx.setServletConfig(servletConfig);
    ctx.refresh();

    ConfigurableEnvironment environment = ctx.getEnvironment();
    assertThat(environment, instanceOf(StandardServletEnvironment.class));
    MutablePropertySources propertySources = environment.getPropertySources();
    assertThat(propertySources.contains(StandardServletEnvironment.SERVLET_CONTEXT_PROPERTY_SOURCE_NAME), is(true));
    assertThat(propertySources.contains(StandardServletEnvironment.SERVLET_CONFIG_PROPERTY_SOURCE_NAME), is(true));

    // ServletConfig gets precedence
    assertThat(environment.getProperty("pCommon"), is("pCommonConfigValue"));
    assertThat(propertySources.precedenceOf(PropertySource.named(StandardServletEnvironment.SERVLET_CONFIG_PROPERTY_SOURCE_NAME)),
            lessThan(propertySources.precedenceOf(PropertySource.named(StandardServletEnvironment.SERVLET_CONTEXT_PROPERTY_SOURCE_NAME))));

    // but all params are available
    assertThat(environment.getProperty("pContext1"), is("pContext1Value"));
    assertThat(environment.getProperty("pConfig1"), is("pConfig1Value"));

    // Servlet* PropertySources have precedence over System* PropertySources
    assertThat(propertySources.precedenceOf(PropertySource.named(StandardServletEnvironment.SERVLET_CONFIG_PROPERTY_SOURCE_NAME)),
            lessThan(propertySources.precedenceOf(PropertySource.named(StandardEnvironment.SYSTEM_PROPERTIES_PROPERTY_SOURCE_NAME))));

    // Replace system properties with a mock property source for convenience
    MockPropertySource mockSystemProperties = new MockPropertySource(StandardEnvironment.SYSTEM_PROPERTIES_PROPERTY_SOURCE_NAME);
    mockSystemProperties.setProperty("pCommon", "pCommonSysPropsValue");
    mockSystemProperties.setProperty("pSysProps1", "pSysProps1Value");
    propertySources.replace(StandardEnvironment.SYSTEM_PROPERTIES_PROPERTY_SOURCE_NAME, mockSystemProperties);

    // assert that servletconfig params resolve with higher precedence than sysprops
    assertThat(environment.getProperty("pCommon"), is("pCommonConfigValue"));
    assertThat(environment.getProperty("pSysProps1"), is("pSysProps1Value"));
}


问题


面经


文章

微信
公众号

扫码关注公众号