ContextLoaderPlugIn.java 文件源码

java
阅读 18 收藏 0 点赞 0 评论 0

项目:class-guard 作者:
/**
 * Instantiate the WebApplicationContext for the ActionServlet, either a default
 * XmlWebApplicationContext or a custom context class if set.
 * <p>This implementation expects custom contexts to implement ConfigurableWebApplicationContext.
 * Can be overridden in subclasses.
 * @throws org.springframework.beans.BeansException if the context couldn't be initialized
 * @see #setContextClass
 * @see org.springframework.web.context.support.XmlWebApplicationContext
 */
protected WebApplicationContext createWebApplicationContext(WebApplicationContext parent)
        throws BeansException {

    if (logger.isDebugEnabled()) {
        logger.debug("ContextLoaderPlugIn for Struts ActionServlet '" + getServletName() +
                "', module '" + getModulePrefix() + "' will try to create custom WebApplicationContext " +
                "context of class '" + getContextClass().getName() + "', using parent context [" + parent + "]");
    }
    if (!ConfigurableWebApplicationContext.class.isAssignableFrom(getContextClass())) {
        throw new ApplicationContextException(
                "Fatal initialization error in ContextLoaderPlugIn for Struts ActionServlet '" + getServletName() +
                "', module '" + getModulePrefix() + "': custom WebApplicationContext class [" +
                getContextClass().getName() + "] is not of type ConfigurableWebApplicationContext");
    }

    ConfigurableWebApplicationContext wac =
            (ConfigurableWebApplicationContext) BeanUtils.instantiateClass(getContextClass());
    wac.setParent(parent);
    wac.setServletContext(getServletContext());
    wac.setNamespace(getNamespace());
    if (getContextConfigLocation() != null) {
        wac.setConfigLocations(
            StringUtils.tokenizeToStringArray(
                        getContextConfigLocation(), ConfigurableWebApplicationContext.CONFIG_LOCATION_DELIMITERS));
    }
    wac.addBeanFactoryPostProcessor(
            new BeanFactoryPostProcessor() {
                public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) {
                    beanFactory.addBeanPostProcessor(new ActionServletAwareProcessor(getActionServlet()));
                    beanFactory.ignoreDependencyType(ActionServlet.class);
                }
            }
    );

    wac.refresh();
    return wac;
}
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号