javascript
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 或: org.springframework.web.context.contextloaderservlet |
通过以上配置,web容器会自动加载/web-inf/applicationcontext.xml初始化
applicationcontext实例,如果需要指定配置文件位置,可通过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()); 配置初始化
1. 在struts-config.xml里,以插件的形式
xml 代码这种方式如果没有配置contextconfiglocation的值,则会自动加载xx-servlet.xml.
xx的值是和web.xml里的配置org.apache.struts.action.actionservlet的servlet-name的值一样
如下:xx的值也就是 action,所以会自动加载action-servlet.xml
xml 代码如果sturts-config.xml里配置了contextconfiglocation的值,那么就不会自动加载xx-servlet.xml了,而只会加载contextconfiglocation所指定的xml.
2. 第2种方式
在web.xml里配置listener
xml 代码
如果在web.xml里给该listener指定要加载的xml,如:
xml 代码则会去加载相应的xml,而不会去加载/web-inf/下的applicationcontext.xml。。但是,如果没有指定的话,默认会去/web-inf/下加载applicationcontext.xml。
3. 第三种方式:contextloaderservlet
xml 代码
这种方式和第二种listener方式一样,唯一的区别就是用listener方式初始化applicationcontext,可以和用第一种方式(struts-config.xml里 plugin方式)同时存在,而contextloaderservlet则不可以和第一种方式同时存在
总结:
contextloaderservlet已经不推荐用了,它只是为了兼容低版本的servlet.jar才用的。
总的来说:listerner要比servlet更好一些,而且listerner监听应用的启动和结束,而servlet启动要稍微延迟一些。
总结
以上是尊龙游戏旗舰厅官网为你收集整理的spring中applicationcontext加载机制和配置初始化的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇:
- 下一篇: