如何创建ApplicationContext接口实例?【详细方法】

4 篇文章 0 订阅

ApplicationContext是BeanFactory的子接口,也被称为应用上下文,是另一种常用的Spring核心容器。它由org.springframework.context. ApplicationContext接口定义,不仅包含了BeanFactory的所有功能,还添加了对国际化、资源访问、事件传播等方面的支持。

创建ApplicationContext接口实例,通常采用两种方法,具体如下:

1、通过ClassPathXmlApplicationContext创建

ClassPathXmlApplicationContext会从类路径classPath中寻找指定的XML配置文件,找到并装载完成ApplicationContext的实例化工作。其使用语法如下:

ApplicationContext applicationContext =
new ClassPathXmlApplicationContext(String configLocation);

上述代码中,configLocation参数用于指定Spring配置文件的名称和位置。如果其值为“applicationContext.xml”,则Spring会去类路径中查找名称为applicationContext.xml的配置文件。

2、通过FileSystemXmlApplicationContext创建

FileSystemXmlApplicationContext会从指定的文件系统路径(绝对路径)中寻找指定的XML配置文件,找到并装载完成ApplicationContext的实例化工作。其使用语法如下:

ApplicationContext applicationContext =
new FileSystemXmlApplicationContext(String configLocation);

与ClassPathXmlApplicationContext有所不同的是,在读取Spring的配置文件时,FileSystemXmlApplicationContext不再从类路径中读取配置文件,而是通过参数指定配置文件的位置,例如“D:/workspaces/applicationContext.xml”。如果在参数中写的不是绝对路径,那么方法调用的时候,会默认用绝对路径来找。这种采用绝对路径的方式,会导致程序的灵活性变差,所以这个方法一般不推荐使用。

在使用Spring框架时,可以通过实例化其中任何一个类来创建ApplicationContext容器。通常在Java项目中,会采用通过ClassPathXmlApplicationContext类来实例化ApplicationContext容器的方式,而在Web项目中,ApplicationContext容器的实例化工作会交由Web服务器来完成。Web服务器实例化ApplicationContext容器时,通常会使用基于ContextLoaderListener实现的方式,此种方式只需要在web.xml中添加如下代码:

<!--  指定Spring配置文件的位置,多个配置文件时,以逗号分隔-->
<context-param>
    <param-name>contextConfigLocation</param-name>
    <!--  Spring将加载 spring目录下的applicationContext.xml文件 -->
    <param-value>
         classpath:spring/applicationContext.xml
    </param-value>
</context-param>
<!--  指定以ContextLoaderListener方式启动Spring容器 -->
<listener>
    <listener-class>
         org.springframework.web.context.ContextLoaderListener
    </listener-class>
</listener>

在本书后面章节讲解三大框架整合以及项目时,将采用基于ContextLoaderListener的方式由Web服务器实例化ApplicationContext容器。

创建Spring容器后,就可以获取Spring容器中的Bean。Spring获取Bean的实例通常采用以下两种方法:

● Object getBean(String name):根据容器中Bean的id或name来获取指定的Bean,获取之后需要进行强制类型转换。

● T getBean(Class requiredType):根据类的类型来获取Bean的实例。由于此方法为泛型方法,因此在获取Bean之后不需要进行强制类型转换。

小提示:

BeanFactory和ApplicationContext两种容器都是通过XML配置文件加载Bean的。二者的主要区别在于,如果Bean的某一个属性没有注入,使用BeanFacotry加载后,在第一次调用getBean()方法时会抛出异常,而ApplicationContext则在初始化时自检,这样有利于检查所依赖属性是否注入。因此,在实际开发中,通常都优先选择使用ApplicationContext,而只有在系统资源较少时,才考虑使用BeanFactory。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
概要设计说明书 1. 总体设计 1.1 需求规定 教务管理系统可分为学生信息管理系统和教师管理信息系统,系统开发的整体任务是 实现学校教师和学生信息管理的系统化、规范化、自动化和智能化,从而达到提高学校 管理效率的目的。 本阶段目的在于明确系统的数据结构和软件结构,此外总体设计还将给出内部软件和 外部系统部件之间的接口定义,各个软件模块的功能说明,数据结构的细节以及具体的 装配要求。 1.2 运行环境 软件基本运行环境为Windows XP环境。 1.3 基本设计概念和处理流程 概要说明书的目的在于明确系统的数据结构和软件结构,设计外部软件和内部软件的 接口,说明各个软件模块的功能说明,数据结构的细节等。系统的总体处理流程如图1- 1所示: 图1-1 系统的总体处理流程 1.4 系统体系结构 用一览表及框图的形式说明本系统的系统元素(各层模块、子程序、公用程序等)的 划分,扼要说明每个系统元素的标识符和功能,分层次地给出各元素之间的控制与被控 制关系。 本系统的体系架构如图1-2所示: 图1-2 系统体系架构 本系统体系结构大致可以定义为:客户机层上的表示层主要是通过Struts框架实现的 ,由显示视图产生一个请求。 请求被ActionServlet(控制器)接收,它在struts- config.xml文件中寻找请求的URI,找到对应的Action类后,Action类执行相应的业务逻 辑。Action类执行建立在模型组件基础上的业务逻辑,模型组件是和应用程序关联的。 一旦Action类处理完业务逻辑,它把控制权返回给ActionServlet,Action类提供一个键 值作为返回的一部分,它指明了处理的结果。ActionServlet使用这个键值来决定在什么 视图中显示Action的类处理结果。当ActionServlet把Action类的处理结果传送到指定的 视图中,请求的过程也就完成了。中间业务层是通过Spring框架实现的,首先建立一个 BaseAction,它继承了Action类,而其他定义的Action都要继承这个BaseAction。这个B aseAction需要导入AppContext工具类,这个AppContext需要导入Spring中 ;这样一个继承BaseAction的Action,就可以getXXXService()的方法得到某一个servi ce的实例----- 服务定位器的设计模式。持久(PO)层是由hibernate架构实现的,它包括关于整体数据 库的,通过Spring集成模板HibernateTemplate提供DAO 来使用PO。在Spring 的配置文件(applicationContext. xml)中配置sessionFactory的bean 来管理hibernate。 本系统组件图如图1-3所示 2. 接口设计 2.1 用户接口 "用户接口 "语法结构 "软件回答信息 " "教务系统管理员登录 "以英文和汉字开头,不超过6个字 "进入主界面 " " "符 " " "信息管理相关操作 " "进行相应的操作" 3. 运行设计 3.1 运行模块组合 具体软件的运行模块组合为程序多窗口的运行环境,各个模块在软件运行过程中能较 好的交换信息,处理数据。 3.2 运行控制 软件运行时有较友好的界面,基本能够实现用户的数据处理要求。 3.3 运行时间 系统的运行时间基本可以达到要求。 4. 系统数据结构 4.1 逻辑设计 教务管理系统E-R图 4.2 逻辑结构设计 表 1、表名称:bkb 表类型:约束表 含义:班级报考表 "字段名称 "字段类型 "Null "含义 "示例数据 " "id "整形 "否,自增 "主键列 "1 " "name "字符 " "值 "八班 " 2、表名称:cjb 表类型:约束表 含义:班级成绩表(打印表) "字段名称 "字段类型 "Null "含义 "示例数据 " "id "整形 "否,自增 "主键列 "1 " "cjb_id "整形 "否 "外键列 "1 " "name "字符 " "值 "八班 " 3、表名称:jhcjb 表类型:约束表 含义:班级计划成绩表(显示和打印) "字段名称 "字段类型 "Null "含义 "示例数据 " "id "整形 "否,自 "主键列 "1 " " " "增 " " " "name "字符 " "值 "八班 " 4、表名称:hks 表类型:约束表 含义:班计划学期考试课程表 "字段名称 "字段类型"Null "含义 "示例数据 " "id "整形 "否,自 "主键列 "1 " " " "增 " " " "fangguansuo"整形 "否 "外键列 "1 " "_id " " " " " "name "字符 " "值 "长三 " 5、表名

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值