Struts+Spring+Hibernate整合的简单实例

openkk 11年前

Spring是开源中间件,广泛应用于java应用中。Spring借由IoC来实现对一整套开发工具箱的支持,他的每个组件都是可替换的。类似于主板上的器件,可以替换升级,以保证电脑的最优化。

IOC

Spring的核心机制是控制反转IoC(inversion of control),也就是依赖注入(DI)。所谓依赖注入简单讲就是创建被调用工作不必要调用者完成,而是将控制权转交给容器。平常在对象A调用对象B的时候,必须在程序中新建对象B,再传入对象A的方法中去。现在我们取消了这两者的亲密耦合关系,在运行中使用set方法,将B存入对象A的属性中。使这个程序保持了使用开放性(A调用新增的C等)和修改闭合性(增加C时不用修改A)。而Spring的作用在于其配置文件接管了我们的setter器方法,把我们需要依赖注入的东西(例如user.addFood(apple)),交给了xml配置文件来完成。

配置文件

Spring的配置文件applicationContext.xml文件,其中主要就是配置各种bean对象,给他们建立关系,下文配置为例,实际上是把orange代表的类com.spring.demo.Orange的实力作为参数传给了com.spring.demo.Man类实例,需要注意的是Man类实例里必须有setFood(Food food) 这个方法做依赖注入。

Spring的两种注入方式

Spring有两种注入方式,分别是上文配置文件中所述的属性注入和另一种叫做建构注入方式,建构注入方式需要的参数<constructor-arg ref="beanB" />而且有着和其父Bean类构造方法完全一致的注入顺序。

这就要求父类的构造方法有这样的结构

    public Man(Food food) {                          this.food =food;        }  

Spring的新特性

Spring从2.5版本开始支持Annotation特性,新特性更灵活方便配置Bean信息。

业务逻辑的处理

在业务逻辑中,首先需要提取XML配置的信息。使用ClassPathXmlApplicationContext("xxx.xml")的方式,加载xml配置文件:

ApplicationContext ctx = new ClassPathXmlApplicationContext("config.xml");

UserV2 peter = (UserV2) ctx.getBean("peter");

其后业务逻辑部分使用peter即可。

Web.xml配置

web.xml文件作为web project的配置文件,负责项目初始化和参数配置信息。一开始需要设置springframework的主要工作类 DispatcherServlet。这个类负责接受分发请求。我们需要给他设定优先启动,同时设置servlet-mapping来设定URL请求。

Web下Spring的VC配置文件

不同于其他java项目, WEB-INF目录下需要新建与初始类同名的配置文件[servlet-name]-servlet.xml配置文件(这里就是spring- servlet.xml),这个配置文件负责MVC中的V和C的配置。其中配置了控制器类C,视图类V和映射到该控制器的URL信息。这样我们的请求信息,经由设定控制器处理,转发到设定的视图显示。为了处理提交数据,需要建立POJO类来存储表单数据,在控制器类中对表单数据进行加载处理。同时在控制类中有个主要的方法ModelAndViewhandle方法,该方法返回一个附加跳转信息的ModelAndView用来处理跳转。

总体流程

在web方式下总体流程图如下:


一些其他事情

容器:其实就是把类委托给另一个类来管理。例如一个类A里有两个属性分别存储了B和C,A相对B和C来讲就是容器。

POJO:Plain Old Java Object,就是一个普通java类的意思,可以视为有一些属性,以及属性的getter和setter访问器的类。

AOP: Aspect-Oriented Programming,面向切面(方面)的编程。该模式为了减小模块之间的耦合度而生,其将处理流程划分成各种断面,数据流过这些断面,。

来自:http://blog.csdn.net/gongqingkui/article/details/8028812