SSH:Struts2与Spring整合核心配置及Jar包引用

来源:互联网 发布:无敌淘宝网 编辑:程序博客网 时间:2024/04/30 01:21

 

关于Spring ApplicationContext

1.        从字面上看ApplicationContext就是Application级别的Context(上下文,上下文一般会包含系统级别的请求参数,自定义的数据对象等等),在Spring中ApplicationContext是Java Bean的基础容器,其具体支持的功能列举如下:

  • 通过提供Bean工厂方法来访问应用程序组件(Application Components);
  • 提供通用的方式来访问文件资源(File Resources);
  • 发布事件到已注册的监听器(Registered Listeners);
  • 对I18N消息的访问处理(Internationalization);
  • 载入多个(有继承关系)上下文,使得每个上下文都专注于一个特定的层次,比如应用的WEB层。

Spring 为ApplicationContext提供三种实现方式

1. ClassPathXmlApplicationContext(只能读放在WEB-INF/classes目录下的配置文件,如果要使用绝对路径,需要加上file:前缀表示这是绝对路径;);

2. FileSystemXmlApplicationContext(没有盘符的是项目工作路径,即项目的根目录;有盘符表示的是文件绝对路径.);

3. XmlWebApplicationContext(专应用于WEB项目)

Struts2与Spring整合

目的:

1、WEB应用启动的时候自动获取Spring的ApplicationContext(根据web.xml的相关配置);

2、 让Spring为Struts2的Action注入所需的资源对象(一般为业务逻辑的Service组件,这些Servcie组件是面向接口的,也就是说在Struts2的Action类中我们仅仅只需关注Service组件的接口而不用关心起实现,具体实现类及其依赖由Spring来实例化);

原理:

只要导入了Struts2的spring插件包(struts2-spring-plugin-version.jar),不需要进行任何额外的配置,Struts2的Action实例对象将由Struts2的Spring插件创建,该插件会按照Action的属性名称自动从Spring容器中查找相同名称的Bean对象对Action进行装配。

实现:

1、 在Maven的pom.xml中新增一个依赖(以便项目引用struts2-spring-plugin-version.jar):



2、 在web.xml中新增配置项


l  Spring上下文配置文件的位置;

l  org.springframework.web.context.ContextLoaderListener创建出WebApplicationContext容器对象,并将创建出来的WebApplicationContext对象存储进了Web应用程序的application作用域中,存储时的key为WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE这个常量表示的字符串,以后在Web应用程序中就可以使用application.getAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE)语句,或Spring提供的工具方法WebApplicationContextUtils.getWebApplicationContext(application)来获得 spring容器对象。ContextLoaderListener使用contextConfigLocation这个ServletContext初始化参数来指定WebApplicationContext容器对象的配置文件,如果没有配置contextConfigLocation这个ServletContext的初始化参数,ContextLoaderListener则默认使用/WEB-INF /applicationContext.xml作为配置文件。

3、在Spring配置文件:spring-config.xml中注入相关Action的依赖


可以看到,TestAction这个Struts2的Action类所依赖的Service组件由Spring配置文件来配置并由Spring IoC容器来实现依赖注入。

4、在Struts2的Action类中通过Annotation来指定Spring中配置的BeanId(testAction)



0 0
原创粉丝点击