欢迎访问 生活随笔!

尊龙游戏旗舰厅官网

当前位置: 尊龙游戏旗舰厅官网 > 前端技术 > javascript >内容正文

javascript

spring中applicationcontext加载机制和配置初始化 -尊龙游戏旗舰厅官网

发布时间:2025/1/21 javascript 15 豆豆
尊龙游戏旗舰厅官网 收集整理的这篇文章主要介绍了 spring中applicationcontext加载机制和配置初始化 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

转自:http://liuwei1578.blog.163.com/blog/static/495803642007116111923195/

spring中applicationcontext加载机制。 
       加载器目前有两种选择:contextloaderlistener和contextloaderservlet。 
       这两者在功能上完全等同,只是一个是基于servlet2.3版本中新引入的listener接口实现,而另一个基于servlet接口实现。开发中可根据目标web容器的实际情况进行选择。 

配置非常简单,在web.xml中增加: 
 
      
          org.springframework.web.context.contextloaderlistener 
    
 
 
或: 
 
       context 
        
          org.springframework.web.context.contextloaderservlet
      
 
       1 
 


通过以上配置,web容器会自动加载/web-inf/applicationcontext.xml初始化 
applicationcontext实例,如果需要指定配置文件位置,可通过context-param加以指定: 
 
       contextconfiglocation 
       /web-inf/myapplicationcontext.xml 
 

配置完成之后,即可通过 
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()); 配置初始化

1. 在struts-config.xml里,以插件的形式

xml 代码
  • < plug-in classname="org.springframework.web.struts.contextloaderplugin" / >  
  •     < set-property property="contextconfiglocation" value="/web-inf/applicationcontext.xml" / >  
  • < / plug-in >   
  • 这种方式如果没有配置contextconfiglocation的值,则会自动加载xx-servlet.xml.

    xx的值是和web.xml里的配置org.apache.struts.action.actionservlet的servlet-name的值一样

    如下:xx的值也就是 action,所以会自动加载action-servlet.xml

    xml 代码
  • < servlet >  
  •     < servlet-name >action< / servlet-name >  
  •     < servlet-class >org.apache.struts.action.actionservlet< / servlet-class >  
  •     < load-on-startup >1< / load-on-startup >  
  •   < / servlet >  
  •   < servlet-mapping >  
  •     < servlet-name >action< / servlet-name >  
  •     < url-pattern >*.do< / url-pattern >  
  •   < / servlet-mapping >  
  •  如果sturts-config.xml里配置了contextconfiglocation的值,那么就不会自动加载xx-servlet.xml了,而只会加载contextconfiglocation所指定的xml.

     2. 第2种方式

    在web.xml里配置listener

    xml 代码
  •   
  •         <  listener-class>org.springframework.web.context.contextloaderlistenerlistener-class>  
  •     <  /  listener>  
  •  

    如果在web.xml里给该listener指定要加载的xml,如:

    xml 代码
  •   
  •         contextconfiglocationparam-name>  
  •         classpath*:spring/*.xmlparam-value>  
  •     context-param>  
  • 则会去加载相应的xml,而不会去加载/web-inf/下的applicationcontext.xml。。但是,如果没有指定的话,默认会去/web-inf/下加载applicationcontext.xml。

     

    3. 第三种方式:contextloaderservlet

    xml 代码
  • < servlet>    
  •         < servlet-name>context< / servlet-name>    
  •         < servlet-class>org.springframework.web.context.contextloaderservlet< / servlet-class>    
  •         < load-on-startup>1< / load-on-startup>    
  •     < / servlet>  
  •  

     这种方式和第二种listener方式一样,唯一的区别就是用listener方式初始化applicationcontext,可以和用第一种方式(struts-config.xml里 plugin方式)同时存在,而contextloaderservlet则不可以和第一种方式同时存在

    总结:

    contextloaderservlet已经不推荐用了,它只是为了兼容低版本的servlet.jar才用的。

    总的来说:listerner要比servlet更好一些,而且listerner监听应用的启动和结束,而servlet启动要稍微延迟一些。

    总结

    以上是尊龙游戏旗舰厅官网为你收集整理的spring中applicationcontext加载机制和配置初始化的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得尊龙游戏旗舰厅官网网站内容还不错,欢迎将尊龙游戏旗舰厅官网推荐给好友。

    • 上一篇:
    • 下一篇:
    网站地图