`
liushengit
  • 浏览: 36480 次
  • 性别: Icon_minigender_1
  • 来自: 石家庄
社区版块
存档分类
最新评论

扩展ContextLoaderListener类,在WEB 系统启动时将ApplicationContext单例压人BeanFactory中

    博客分类:
  • SSH
 
阅读更多
package net.gbicc.x27.util.web;

import net.gbicc.BpmConfig;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class NeqBeanFactory {
    private static final BpmConfig config = BpmConfig.getInstance();
	private static final String clientSite = config.getClientSite();
	private ApplicationContext context = null;

	private static NeqBeanFactory inst = new NeqBeanFactory();

	private NeqBeanFactory() {
	};

	public static NeqBeanFactory getInstance() {
		return inst;
	}

	public synchronized void setContext(ApplicationContext context) {
		this.context = context;
	}

	public synchronized ApplicationContext getContext() {
		if (context == null) {
			bulidContext();
		}
		return context;
	}

	/**
	 * 根据beanId 获取Bean
	 * 
	 * @param beanId
	 * @return
	 */
	public synchronized Object getBean(String beanId) {
		if (context == null) {
			bulidContext();
			System.out.println("NeqBeanFactory===bulidContext===beanId="+beanId);
		}
		System.out.println("NeqBeanFactory====NOT_bulidContext===beanId="+beanId);
		return context.getBean(beanId);
	}

	public synchronized void bulidContext() {
		
		    String[] contextRef = new String[1];
	        if ("internal".equals(clientSite)){
	            contextRef = new String[] { "classpath:spring-context-internal.xml" };
	        } else {
	            contextRef = new String[] { "classpath:spring-context-external.xml" };
	        }
	        if (context == null){
	        	context = new ClassPathXmlApplicationContext(contextRef);
	        }
	}

}

 

 

 

package net.gbicc.x27.util.web;

import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;

import org.springframework.context.ApplicationContext;
import org.springframework.web.context.ContextLoaderListener;
import org.springframework.web.context.support.WebApplicationContextUtils;
/**
 * 扩展ContextLoaderListener类
 * 在WEB 系统启动时将ApplicationContext单例压人BeanFactory中
 * @author BPM05
 *
 */

public class NeqContextLoaderListener extends ContextLoaderListener {
	
	public  void contextInitialized(ServletContextEvent event){
		try {
			super.contextInitialized(event);
		} catch (Exception e) {
			e.printStackTrace();
		}
		System.out.println("=========================NeqContextLoaderListener");
		ServletContext  context = event.getServletContext();
		ApplicationContext ctx=WebApplicationContextUtils.getRequiredWebApplicationContext(context);
		NeqBeanFactory.getInstance().setContext(ctx);
	}

}

 

分享到:
评论

相关推荐

    Spring的监听器ContextLoaderListener的作用

    ContextLoaderListener 是 Spring 框架中的一种监听器,它的主要作用是启动 Web 容器时,自动装配 ApplicationContext 的配置信息。它实现了 ServletContextListener 接口,在 web.xml 文件中配置这个监听器,启动...

    Spring在web下启动流程学习笔记

    在Spring框架中,Web应用的启动流程涉及到多个关键组件和步骤。本文将深入探讨Spring在Tomcat环境下如何初始化并创建ApplicationContext,以及Spring MVC与Spring协同工作时的应用上下文创建过程。 首先,我们关注...

    在Eclipse 中创建Spring的 Web应用.doc

    - **ContextLoaderListener**:这是一个Servlet监听器,它会在Web应用启动时自动加载`/WEB-INF/applicationContext.xml`(默认配置)。 - **ContextLoaderServlet**:这是一个Servlet,同样用于初始化`...

    web.xml配置解析.pdf

    ContextLoaderListener 是Spring框架中一个重要的组件,它作为Servlet容器的监听器(ServletContextListener),在Web应用程序启动时自动加载ApplicationContext的配置信息。当web.xml中配置了`<listener-class>org...

    基于java的企业级应用开发:Spring的核心容器.ppt

    在`web.xml`配置文件中,设置`<context-param>`和`<listener>`元素,指定配置文件的位置,这样当Web服务器启动时,`ContextLoaderListener`会自动创建ApplicationContext。 ApplicationContext的实例化完成后,我们...

    专题资料(2021-2022年)Java项目教学第一学期SSM框架讲义1Spring的基本应用.docx

    在Web应用中,ApplicationContext的初始化常通过`ContextLoaderListener`在web.xml中配置完成,这样可以确保在Web服务器启动时加载Spring容器。配置如下: ```xml <param-name>contextConfigLocation ...

    spring的ppt

    配置文件通常放在项目的\WEB-INF目录下,可以通过Web应用程序的监听器(ContextLoaderListener)或自启动Servlet(ContextLoaderServlet)来加载。 在Web应用程序中,Spring的WebApplicationContext是专门为Web环境...

    ssh框架搭建

    在`web.xml`中添加`ContextLoaderListener`,用于在服务器启动时初始化Spring的ApplicationContext,并将BeanFactory放入ServletContext中。 Spring的`ContextLoaderListener`初始化代码示例: ```java public ...

    Spring学习资料

    而ContextLoaderListener则是一个监听器,可以在Web应用启动时加载配置文件,创建ApplicationContext,并将上下文信息存储在ServletContext中,方便全局访问。 在Web应用的部署描述符web.xml中,我们可以通过`...

    Java项目教学第一学期-SSM框架讲义1-Spring的基本应用.pdf

    在Web应用中,ApplicationContext通常由`ContextLoaderListener`在web.xml中配置,这样可以在应用启动时自动加载Spring配置。 【获取Spring容器中的Bean】 创建ApplicationContext后,有两种方式获取Bean: 1. `...

    spring源代码解析

    可以通过使用Spring代码声明式的指定在web应用程序启动时载入应用程序上下文(WebApplicationContext),Spring的ContextLoader是提供这样性能的类,我们可以使用 ContextLoaderServlet或者ContextLoaderListener的...

    ContextLoader 加载xml

    1. **初始化**: 应用程序启动时,`ContextLoader`会根据`web.xml`中的`ContextLoaderListener`配置寻找XML配置文件。 2. **创建ApplicationContext**: `ContextLoader`读取这些XML配置文件,然后创建一个`...

    Spring live中文版

    - **上下文加载**:ApplicationContext 通常在应用启动时被加载,提供了一个完整的配置上下文。 - **单元测试与上下文**:在编写单元测试时,可以通过 ApplicationContext 来获取特定的 Bean,从而测试其功能。 #...

    Spring基础面试

    - **知识点**: 在 JavaWeb 应用中,可以通过 `web.xml` 文件配置 `ContextLoaderListener` 来启动 Spring 容器。 - **解释**: ```xml <param-name>contextConfigLocation <param-value>/WEB-INF/...

    java学习笔记

    当Web应用启动时,它会创建Spring的根ApplicationContext,使得应用的bean可以在请求到达之前被实例化和配置。 6. **OurFactoryInterceptor.java**:这个名字暗示了一个自定义的拦截器,可能用于AOP(面向切面编程...

    flex整合Spring

    1. **配置Spring容器**:在Web应用启动时加载Spring容器,并指定Spring配置文件的位置。 2. **定义SpringFactory**:自定义一个SpringFactory类,用于创建和管理Spring容器中的Bean实例。 3. **配置FlexServices**:...

Global site tag (gtag.js) - Google Analytics