Spring MVC那些事之ApplicationContext使用
来源:互联网 发布:php官方手册 编辑:程序博客网 时间:2024/06/14 07:17
ApplicationContext 是 BeanFactory 接口的子接口,处于 context 包下。 ApplicationContext 允许以声明式方式操作容器,无须手动创建。可利用如 ContextLoader 的支持类,在 Web 应用启动时自动创建 ApplicationContext。当然,也可以采用编程方式创建 ApplicationContext。ApplicationContext包括BeanFactory的全部功能,因此建议优先使用ApplicationContext。除非对于某些内存非常关键的应用,才考虑使用 BeanFactory。
在ApplicationContext实例化后,同样通过getBean方法从ApplicationContext容器中获取装配好的Bean实例以供使用。
与BeanFactory不同的是,ApplicationContext容器实例化后会自动对所有的单实例Bean进行实例化与依赖关系的装配,使之处于待用状态。
对于ApplicationContext,有主要三种加载配置文件的方式来进行实例化:
1.使用classPathXmlApplicationContext,从类路径classpath中寻找xml配置文件,找到并装载完成ApplicationContext的实例化工作:
ApplicationContext ctx=new ClassPathXmlApplicationContext("ApplicationContext.xml");
classpath:前缀是不需要的,默认就是指项目的classpath路径下面。如果要使用绝对路径,需要加上file:前缀表示这是绝对路径;在根据classpath查找文件时,一般有classpath:和classpath*:两种方式,前者在未找到配置文件时抛出异常,而后者直接忽略。
2.使用FileSystemXmlApplicationContext,从指定的文件系统路径下寻找指定的xml配置文件,找到并装载完成ApplicationContext的实例化工作:
ApplicationContext ctx=new FileSystemXmlApplicationContext("ApplicationContext.xml");
这种方式适用于采用Spring框架的独立应用程序,需要程序通过配置文件手工初始化Spring的情况,在获取失败时抛出异常。在查找配置文件时,没有盘符的是项目工作路径,即项目的根目录;有盘符表示的是文件绝对路径.如果要使用classpath路径,需要前缀classpath。
3.使用WebApplicationContextUtils类的getRequiredWebApplicationContext方法可在JSP与Servlet中取得IoC容器的引用,从web应用(/WEB-INF/applicationContext.xml)中寻找指定的xml配置文件,找到并装载完成ApplicationContext的实例化工作,这是为Web工程量身定制的,
ServletContext servletContext = request.getSession().getServletContext();
ApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(servletContext);
在加载配置文件时,如果未找到返回null。
在上面三种方法中默认使用ClassPathXmlApplicationContext,Web项目的启动是由相应的Web服务器负责的,因此,在Web项目中ApplicationContext容器的实例化工作最好交给Web服务器来完成。
一般来说,对于ApplicationContext,一种通过org.springframework.web.context.ContextLoaderListener的listener的方法进行配置,一种通过org.springframework.web.context.ContextLoaderServlet的 servlet方法进行配置。其中,ContextLoaderListener所初始化的容器,我们称之为Root WebApplicationContext。在配置过程中,ApplicationContext实例,如果需要指定配置文件位置,可通过context-param加以指定。servlet容器启动时加载组件的顺序来看,Listener组件是优先于Servlet组件的。基于Servlet方式的加载方案主要是为了兼容Servlet2.3及以下规范的Servlet容器。因此,基于Listener方式启动Spring容器是目前的主流选择。
- Spring MVC那些事之ApplicationContext使用
- Spring MVC那些事之JdbcTemplate的使用总结
- spring ApplicationContext-mvc之<mvc:annotation-driven />初探
- Spring MVC获取ApplicationContext
- Spring MVC framework深入分析之二--ApplicationContext之谜
- Spring MVC那些事之环境的搭建
- Spring MVC 4那些事
- Spring MVC framework深入分析二--ApplicationContext之谜
- Spring MVC framework深入分析二--ApplicationContext之谜
- Spring MVC framework深入分析二--ApplicationContext之谜
- springMVC之web.xml,spring-mvc.xml与applicationContext.xml
- spring ApplicationContext-mvc之CommonsMultipartResolver对文件上传的支持
- spring之ApplicationContext
- spring之ApplicationContext初探
- Spring之ApplicationContext
- spring之applicationContext、beanFactory
- spring ApplicationContext 使用总结
- spring中使用ApplicationContext
- Java运算符详解及其优先级
- FZU 1775 Counting Binary Trees(卡特兰数前n项和模m)
- tomcat部署web应用过程
- 关于寄存器ESP和EBP的一些理解
- 2-sat(石头、剪刀、布)hdu4115
- Spring MVC那些事之ApplicationContext使用
- ARC与垃圾回收机制的区别
- 淘宝爆款实例解说 小卖家如何打造淘宝爆款
- 斯坦福大学英属哥伦比亚大学 博弈论课程week3 problem set 3及其答案
- 易普森企业网站项目
- 在项目实践中如何选择编程语言
- Troubleshooting 10g or 11.1 Oracle Clusterware Root.sh Problems (Doc ID 240001.1)
- 为什么对象被new 以后在执行dup操作?
- java 内存回收和回收机制的算法