`
gudujianxuehu
  • 浏览: 97871 次
  • 来自: ...
社区版块
存档分类
最新评论

Spring中ApplicationContext加载机制

阅读更多
         加载器目前有两种选择:ContextLoaderListener和ContextLoaderServlet。
         这两者在功能上完全等同,只是一个是基于Servlet2.3版本中新引入的Listener接口实现,而另一个基于Servlet接口实现。开发中可根据目标Web容器的实际情况进行选择。


配置非常简单,在web.xml中增加: 

<listener> 
       <listener-class> 
      org.springframework.web.context.ContextLoaderListener
       </listener-class> 
</listener> 

或: 

<servlet> 
         <servlet-name>context</servlet-name> 
         <servlet-class> 
           org.springframework.web.context.ContextLoaderServlet 
         </servlet-class> 
         <load-on-startup>1</load-on-startup> 
</servlet>	

通过以上配置,Web容器会自动加载/WEB-INF/applicationContext.xml初始化 
ApplicationContext实例,如果需要指定配置文件位置,可通过context-param加以指定: 

<context-param> 
         <param-name>contextConfigLocation</param-name> 
         <param-value>/WEB-INF/myApplicationContext.xml</param-value> 
</context-param> 

配置完成之后,即可通过 
WebApplicationContextUtils.getWebApplicationContext 方法在Web应用中获取ApplicationContext引用。 

如:
ApplicationContext ctx=WebApplicationContextUtils.getWebApplicationContext(); 
         LoginAction action=(LoginAction)ctx.getBean("action");

----------------------------------------------------------------------------------

spring为ApplicationContext提供有三种实现(举例)

spring为ApplicationContext提供的3种实现分别为:ClassPathXmlApplicationContext,FileSystemXmlApplicationContext,XmlWebApplicationContext,其中XmlWebApplicationContext是专为Web工程定制的。使用举例如下:

   1. FileSystemXmlApplicationContext

     eg1.
     ApplicationContext ctx = new FileSystemXmlApplicationContext("bean.xml"); //加载单个配置文件

     eg2. 
     String[] locations = {"bean1.xml", "bean2.xml", "bean3.xml"};
     ApplicationContext ctx = new FileSystemXmlApplicationContext(locations ); //加载多个配置文件

      eg3.        
      ApplicationContext ctx =new FileSystemXmlApplicationContext("D:/project/bean.xml");//根据具体路径加载文件

  2. ClassPathXmlApplicationContext

      eg1.
      ApplicationContext ctx = new ClassPathXmlApplicationContext("bean.xml");

      eg2. 
      String[] locations = {"bean1.xml", "bean2.xml", "bean3.xml"};
      ApplicationContext ctx = new ClassPathXmlApplication(locations);

      注:其中FileSystemXmlApplicationContext和ClassPathXmlApplicationContext与BeanFactory的xml文件定位方式一样是基于路径的

3. XmlWebApplicationContext

      eg1.
      ServletContext servletContext = request.getSession().getServletContext();
      ApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(servletContext);

  注 : 一般是 ApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(this.getServletContext());

分享到:
评论

相关推荐

    Spring中ApplicationContext和beanfactory区别.rar

    3. **事件支持**:ApplicationContext提供了ApplicationEvent和ApplicationListener机制,允许在应用程序上下文中发布和监听事件。 4. **AOP代理**:ApplicationContext能够自动创建AOP代理,使得我们可以方便地...

    三、Spring源码分析——ApplicationContext

    ApplicationContext还支持Bean的懒加载、单例或多例管理、Profile功能(根据环境选择加载不同的配置)、以及与其他Spring模块(如Spring Data、Spring Security等)的集成。 总的来说,ApplicationContext作为...

    Spring中使用classpath加载配置文件浅析

    在Spring框架中,classpath加载配置文件是应用开发中常见的操作。Spring框架提供了灵活的方式来...随着技术的发展,Spring也在不断地改进其配置加载机制,了解最新的加载方式可以帮助开发者更有效地利用Spring框架。

    Spring动态加载配置文件

    在Spring框架中,动态加载配置文件是一项重要的功能,它使得开发者在开发过程中无需重启应用就能实时更新配置,极大地提高了开发效率。热部署方案是这一功能的具体应用,它允许我们在不中断服务的情况下,对应用程序...

    Spring中Bean的生命周期 applicationcontext的应用(实现国际化,事件的传递)

    在Spring框架中,Bean的生命周期管理和ApplicationContext的应用是两个核心概念,它们对于理解Spring如何管理和协调应用中的对象至关重要。本文将深入探讨这两个主题,并结合国际化(i18n)和事件传递来阐述它们在...

    day38 05-Spring的BeanFactory与ApplicationContext区别

    在Spring框架中,BeanFactory和ApplicationContext是两种不同的bean容器,它们各自有其特性和应用场景,理解二者的区别对于深入掌握Spring框架至关重要。 首先,BeanFactory是Spring中最基本的bean容器,它提供了对...

    spring加载

    《Spring框架加载机制详解》 在Java开发领域,Spring框架以其强大的依赖注入和面向切面编程功能,成为了企业级应用的首选。本文将深入探讨Spring框架的加载过程,旨在帮助开发者更好地理解和掌握Spring的核心机制。...

    09 Spring IoC容器ApplicationContext如何实现国际化慕课专栏1

    理解这些基本概念和机制后,我们可以灵活地在Spring应用中实现国际化,为全球用户提供更加友好和本地化的体验。在Spring MVC中,国际化同样可以应用,通过配置视图解析器和HTTP请求中的locale信息,可以实现动态切换...

    struts加载spring的方法

    2. **配置Spring监听器**:在`web.xml`文件中,需要配置一个Spring的上下文监听器`ContextLoaderListener`,该监听器负责初始化Spring的ApplicationContext。具体配置如下所示: ```xml &lt;listener-class&gt;org....

    SpringCloud中文文档

    Spring Cloud Context 提供了 ApplicationContext 的实用程序和特殊服务,而 Spring Cloud Commons 则是一组在不同的 Spring Cloud 实现中使用的抽象和常用类。 在使用 Spring Cloud 时,需要注意到由于“非法密钥...

    在非spring注解类中使用spring容器中的bean_普通类中使用yml配置文件中的配置信息

    虽然通常这个注解用于Spring管理的Bean,但也可以在非Spring管理的类中使用,只要确保配置的加载和绑定过程正确执行。 为了读取YAML配置,你需要在Spring Boot应用的启动类或者其他适当的初始化点,注册`@...

    Spring Boot技术知识点:如何读取不同路径里的applicationContext.xml配置文件6

    在Spring Boot应用中,我们通常使用YAML或properties文件来管理我们的配置,因为它们与Spring Boot的自动配置机制紧密集成。然而,在某些情况下,我们可能需要读取传统的`applicationContext.xml`配置文件,例如,当...

    如何加载jar包中的spring配置文件

    加载jar包中的Spring配置文件需要对Spring的类路径加载机制有深入理解。通过`ClassPathResource`,我们可以定位并加载jar包内的配置,然后应用到`ApplicationContext`。在SSM整合的项目中,正确地加载这些配置文件...

    Spring5中文文档

    它介绍了Spring的ApplicationContext和BeanFactory等核心组件,以及如何通过注解和Java配置文件来配置bean。还涉及了Spring IoC容器的扩展功能,例如资源加载、环境抽象和加载时编织器的注册。 资源管理章节涵盖了...

    xfire+Spring整合

    3. **XFire的Spring支持**:XFire提供了对Spring的内置支持,可以通过Spring的ApplicationContext加载Web服务。在Spring配置文件中,我们可以定义一个`&lt;bean&gt;`,指定其类型为`org.codehaus.xfire.spring....

    Spring Boot技术知识点:如何读取不同路径里的applicationContext.xml配置文件2

    此外,`@Component`注解使这个类成为了一个Spring Bean,`ApplicationContextAware`接口则允许我们获取并设置`ApplicationContext`,从而能够在`loadXmlConfigurations`方法中加载XML配置。 在实际开发中,你还需要...

    Spring 加载多个配置文件

    Spring 提供了多种机制来加载和管理多个配置文件,确保应用程序能够灵活地组织和维护其配置细节。 ##### 3.1 ApplicationContext 加载多个配置文件 `ApplicationContext` 是 Spring 的核心接口之一,用于提供Bean...

    Spring Boot技术知识点:如何读取不同路径里的applicationContext.xml配置文件1

    总之,虽然Spring Boot主要依赖Java配置,但通过合理的使用`@ImportResource`和理解配置加载机制,我们可以灵活地在项目中融入XML配置文件,实现与Spring Boot的无缝集成。这使得我们能够在享受Spring Boot带来的...

Global site tag (gtag.js) - Google Analytics