zoukankan      html  css  js  c++  java
  • CloudStack采用spring加载bean(cloud-framework-spring-module模块)

    CloudStackContextLoaderListener

    /*
     * Licensed to the Apache Software Foundation (ASF) under one
     * or more contributor license agreements.  See the NOTICE file
     * distributed with this work for additional information
     * regarding copyright ownership.  The ASF licenses this file
     * to you under the Apache License, Version 2.0 (the
     * "License"); you may not use this file except in compliance
     * with the License.  You may obtain a copy of the License at
     *
     *   http://www.apache.org/licenses/LICENSE-2.0
     *
     * Unless required by applicable law or agreed to in writing,
     * software distributed under the License is distributed on an
     * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
     * KIND, either express or implied.  See the License for the
     * specific language governing permissions and limitations
     * under the License.
     */
    package org.apache.cloudstack.spring.module.web;
    
    import java.io.IOException;
    
    import javax.servlet.ServletContext;
    import javax.servlet.ServletContextEvent;
    
    import org.apache.cloudstack.spring.module.factory.CloudStackSpringContext;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.context.ApplicationContext;
    import org.springframework.web.context.ConfigurableWebApplicationContext;
    import org.springframework.web.context.ContextLoaderListener;
    
    public class CloudStackContextLoaderListener extends ContextLoaderListener {
    
        public static final String WEB_PARENT_MODULE = "parentModule";
        public static final String WEB_PARENT_MODULE_DEFAULT = "web";
        
        private static final Logger log = LoggerFactory.getLogger(CloudStackContextLoaderListener.class);
        
        CloudStackSpringContext cloudStackContext;
        String configuredParentName;
        
        @Override
        protected ApplicationContext loadParentContext(ServletContext servletContext) {
            return cloudStackContext.getApplicationContextForWeb(configuredParentName);
        }
    
        @Override

    //上下文初始化,通过servlet内容事件 public void contextInitialized(ServletContextEvent event) { try { cloudStackContext = new CloudStackSpringContext(); event.getServletContext().setAttribute(CloudStackSpringContext.CLOUDSTACK_CONTEXT_SERVLET_KEY, cloudStackContext); } catch (IOException e) { log.error("Failed to start CloudStack", e); throw new RuntimeException("Failed to initialize CloudStack Spring modules", e); } configuredParentName = event.getServletContext().getInitParameter(WEB_PARENT_MODULE); if ( configuredParentName == null ) { configuredParentName = WEB_PARENT_MODULE_DEFAULT; } super.contextInitialized(event); } @Override protected void customizeContext(ServletContext servletContext, ConfigurableWebApplicationContext applicationContext) { super.customizeContext(servletContext, applicationContext); String[] newLocations = cloudStackContext.getConfigLocationsForWeb(configuredParentName, applicationContext.getConfigLocations());
         //设置应用到新的位置 applicationContext.setConfigLocations(newLocations); } }
  • 相关阅读:
    循环结构
    位运算符
    Switch 选择结构
    if结构和逻辑运算符
    变量和运算符
    [luogu1090 SCOI2003] 字符串折叠(区间DP+hash)
    [luogu2329 SCOI2005] 栅栏(二分+搜索)
    [luogu 4886] 快递员
    [luogu4290 HAOI2008]玩具取名(DP)
    [luogu2624 HNOI2008]明明的烦恼 (prufer+高精)
  • 原文地址:https://www.cnblogs.com/heidsoft/p/3522887.html
Copyright © 2011-2022 走看看