spring有三种启动方式,使用ContextLoaderServlet,ContextLoaderListener和ContextLoaderPlugIn spring3.0及以后版本中已经删除ContextLoaderServlet 和Log4jConfigServlet 可以采用余下两种启动方式ContextLoaderListener和ContextLoaderPlugIn 建议使用ContextLoaderListener 。 N0:1 <!--推荐使用此种方式-->
- <listener>
- <listener-class>
- org.springframework.web.context.ContextLoaderListener
- </listener-class>
- </listener>
- <!--contextConfigLocation在 ContextLoaderListener类中的默认值是 /WEB-INF/applicationContext.xml-->
- <context-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>/WEB-INF/applicationContext.xml</param-value>
- <!-- <param-value>classpath:applicationContext*.xml</param-value> -->
- </context-param>
<listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener> <!--contextConfigLocation在 ContextLoaderListener类中的默认值是 /WEB-INF/applicationContext.xml--> <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/applicationContext.xml</param-value> <!-- <param-value>classpath:applicationContext*.xml</param-value> --> </context-param>
N0:2 <!--spring3.0之后不再支持此种方式-->
- <servlet>
- <servlet-name>context</servlet-name>
- <servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>
- <load-on-startup>1</load-on-startup>
- </servlet>
<servlet> <servlet-name>context</servlet-name> <servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet>
N0:3 <!--要导入org.springframework.web.struts-3.0.5.RELEASE.jar包,在struts2.0及以后版本不支持此种方式加载spring-->
- <plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
- <set-property property="contextConfigLocation" value="/WEB-INF/applicationContext.xml"/>
- </plug-in>
<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn"> <set-property property="contextConfigLocation" value="/WEB-INF/applicationContext.xml"/> </plug-in>
<!--Spring获取Bean的几种方式 http://www.blogjava.net/jerry-zhaoj/articles/234663.html-->
通过xml配置文件
bean配置在xml里面,spring提供两种方式读取配置文件得到ApplicationContext.
FileSystemXmlApplicationContext
通过程序在初始化的时候,导入Bean配置文件,然后得到Bean实例:
- ApplicationContext oAC = new FileSystemXmlApplicationContext”applicationContext.xml”)
- oAC .getBean(”bean01″);
ApplicationContext oAC = new FileSystemXmlApplicationContext”applicationContext.xml”) oAC .getBean(”bean01″);
WebApplicationContextUtil
在B/S系统中,通常在web.xml初始化bean的配置文件,然后由WebAppliCationContextUtil得到ApplicationContext.例如:
- ApplicationContext ctx = WebApplicationContextUtils.getRequiredWebApplicationContext(ServletContext sc);
- //ApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(ServletContext sc);
ApplicationContext ctx = WebApplicationContextUtils.getRequiredWebApplicationContext(ServletContext sc); //ApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(ServletContext sc);
getRequiredWebApplicationContext和getWebApplicationContext的区别是,获取失败时候,getRequiredWebApplicationContext抛出异常,getWebApplicationContext抛出null
ApplicationObjectSupport
抽象类,它提供getApplicationContext()方法,可以方便的获取到ApplicationContext。Spring初始化时,会通过该抽象类的setApplicationContext(ApplicationContextcontext)方法将ApplicationContext 对象注入。
WebApplicationObjectSupport
抽象类,它提供getWebApplicationContext()获WebApplicationContext
ApplicationContextAware
接口类,实现该接口的setApplicationContext(ApplicationContextcontext)方法,并保存ApplicationContext对象。Spring初始化时,会通过该方法将ApplicationContext对象注入。