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); } }
  • 相关阅读:
    VS2010/MFC编程入门之四十九(图形图像:CDC类及其屏幕绘图函数)
    VS2010/MFC编程入门之四十八(字体和文本输出:文本输出)
    VS2010/MFC编程入门之四十七(字体和文本输出:CFont字体类)
    VS2010/MFC编程入门之四十六(MFC常用类:MFC异常处理)
    VS2010/MFC编程入门之四十五(MFC常用类:CFile文件操作类)
    VS2010/MFC编程入门之四十四(MFC常用类:定时器Timer)
    VS2010/MFC编程入门之四十三(MFC常用类:CTime类和CTimeSpan类)
    spring cloud深入学习(二)-----服务注册中心spring cloud eureka
    spring cloud深入学习(一)-----什么是微服务?什么是rpc?spring cloud简介
    spring深入学习(六)-----springmvc
  • 原文地址:https://www.cnblogs.com/heidsoft/p/3522887.html
Copyright © 2011-2022 走看看