`
javawl
  • 浏览: 28069 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

为什么要使用Spring?(转)

阅读更多

打算看Spring,作为三大框架之一,一直很困惑她有什么用?为什么要使用Spring呢?回过头来想想过去一年花了很多时间来看Struts、Hibernate,总是不停地去他们有什么用,怎么去用,却从没去想过为什么要使用他们?必须要使用SSH吗?所以花了点时间去搜集资料(大部分来自网上,引用出处太多,恕不一一标明。)。

     SSH 在J2EE项目中表示了3种框架,即 Spring + Struts +Hibernate。 Struts对Model,View和Controller都提供了对应的组件。Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架,它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。 Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,可以应用在任何使用JDBC的场合,可以在Servlet/JSP的Web应用中使用,也可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。

 

   Struts2原理就是用拦截器,使得你客户端发送的请求都被拦截下来后处理。拦截器用到了反射机制。Struts2主要的功能是控制转发,在于Action的处理,和struts.xml配置。   

   Spring其实包含了很多的知识,用到的有IOC,AOP等,其实就是一个管理框架的容器,你不用再考虑你new对象了,它会帮你做,降低了层与层之间的耦合度。Spring里面有很多的思想,IOC就是控制反转,注入。AOP是面向切面的,有点像拦截器。            

   Hibernate是持久层框架,我们平时用JDBC操作数据库要写SQL语句,有时候字段一多会很麻烦,于是用hibernate就很方便了,你只要熟练掌握里面的映射关系,就不用写sql语句了,它会帮你写,API调用一下很方便的。

 

Struts

  1.Struts框架结构  

       如右图:                                                                                 

        Struts对Model,View和Controller都提供了对应的组件。

  在右图中,ActionServlet,这个类是Struts的核心控制器,负责拦截来自用户的请求。

  Action,这个类通常由用户提供,该控制器负责接收来自ActionServlet的请求,并根据该请求调用模型的业务逻辑方法处理请求,并将处理结果返回给JSP页面显示。

  2.Model部分  由ActionForm和JavaBean组成,其中ActionForm用于封装用户的请求参数,封装成ActionForm对象,该对象被ActionServlet转发给Action,Action根据ActionForm里面的请求参数处理用户的请求。

  JavaBean则封装了底层的业务逻辑,包括数据库访问等。

  3.View部分  该部分采用JSP实现。

  Struts提供了丰富的标签库,通过标签库可以减少脚本的使用,自定义的标签库可以实现与Model的有效交互,并增加了现实功能。对应上图的JSP部分。

  4.Controller组件  Controller组件有两个部分组成——系统核心控制器业务逻辑控制器

  系统核心控制器,对应上图的ActionServlet。该控制器由Struts框架提供,继承HttpServlet类,因此可以配置成标注的Servlet。该控制器负责拦截所有的HTTP请求,然后根据用户请求决定是否要转给业务逻辑控制器。

  业务逻辑控制器,负责处理用户请求,本身不具备处理能力,而是调用Model来完成处理。对应Action部分。

 

Spring

  1.简介 

  ◆目的:解决企业应用开发的复杂性

  ◆功能:使用基本的JavaBean代替EJB,并提供了更多的企业应用功能

  ◆范围:任何Java应用

  简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。

  2.轻量  从大小与开销两方面而言Spring都是轻量的。完整的Spring框架可以在一个大小只有1MB多的JAR文件里发布。并且Spring所需的处理开销也是微不足道的。此外,Spring是非侵入式的:典型地,Spring应用中的对象不依赖于Spring的特定类。

  3.控制反转  Spring通过一种称作控制反转(IoC)的技术促进了松耦合。当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。你可以认为IoC与JNDI相反——不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。

  4.面向切面  Spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务(例如审计(auditing)和事务(transaction)管理)进行内聚性的开发。应用对象只实现它们应该做的——完成业务逻辑——仅此而已。它们并不负责(甚至是意识)其它的系统级关注点,例如日志或事务支持。

  5.容器  Spring包含并管理应用对象的配置和生命周期,在这个意义上它是一种容器,你可以配置你的每个bean如何被创建——基于一个可配置原型(prototype),你的bean可以创建一个单独的实例或者每次需要时都生成一个新的实例——以及它们是如何相互关联的。然而,Spring不应该被混同于传统的重量级的EJB容器,它们经常是庞大与笨重的,难以使用。

  6.框架  Spring可以将简单的组件配置、组合成为复杂的应用。在Spring中,应用对象被声明式地组合,典型地是在一个XML文件里。Spring也提供了很多基础功能(事务管理、持久化框架集成等等),将应用逻辑的开发留给了你。

  所有Spring的这些特征使你能够编写更干净、更可管理、并且更易于测试的代码。它们也为Spring中的各种模块提供了基础支持。

 

Hibernate

  1.简介  

       Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。

  Hibernate的核心接口一共有5个,分别为:Session、SessionFactory、Transaction、Query和Configuration。这5个核心接口在任何开发中都会用到。通过这些接口,不仅可以对持久化对象进行存取,还能够进行事务控制。下面对这五个核心接口分别加以介绍。

  2.Session接口  Session接口负责执行被持久化对象的CRUD操作(CRUD的任务是完成与数据库的交流,包含了很多常见的SQL语句。)。但需要注意的是Session对象是非线程安全的。同时,Hibernate的session不同于JSP应用中的HttpSession。这里当使用session这个术语时,其实指的是Hibernate中的session,而以后会将HttpSesion对象称为用户session。

  3.SessionFactory接口  SessionFactory接口负责初始化Hibernate。它充当数据存储源的代理,并负责创建Session对象。这里用到了工厂模式。需要注意的是SessionFactory并不是轻量级的,因为一般情况下,一个项目通常只需要一个SessionFactory就够,当需要操作多个数据库时,可以为每个数据库指定一个SessionFactory。

  4.Configuration接口  Configuration接口负责配置并启动Hibernate,创建SessionFactory对象。在Hibernate的启动的过程中,Configuration类的实例首先定位映射文档位置、读取配置,然后创建SessionFactory对象。

  5.Transaction接口  Transaction接口负责事务相关的操作。它是可选的,开发人员也可以设计编写自己的底层事务处理代码。

  6.Query和Criteria接口  Query和Criteria接口负责执行各种数据库查询。它可以使用HQL语言或SQL语句两种表达方式。

分享到:
评论

相关推荐

    Spring支持自动转json的依赖

    要使用Gson,你需要添加Gson库的依赖,并在Spring配置中指定GsonHttpMessageConverter。但相比Jackson,Gson在Spring中的使用没有那么广泛,因为Jackson提供了更丰富的功能和更好的性能。 总的来说,Spring通过集...

    Spring LDAP 简单使用

    在开始使用Spring LDAP之前,你需要在项目中添加相关的依赖。如果你使用的是Maven,可以在pom.xml文件中添加如下依赖: ```xml <groupId>org.springframework.ldap <artifactId>spring-ldap-core 版本号 ``` 请...

    word、excel、ppt转pdf,spring boot小demo

    本项目是一个基于Spring Boot框架实现的实用工具,用于将Microsoft Office的三种常见文件格式——Word(.docx)、Excel(.xlsx)和PowerPoint(.pptx)转换为PDF格式。这个小Demo提供了完整的功能,无需任何水印,...

    25个经典的Spring面试问题包含答案

    Spring支持异常翻译,将底层技术抛出的异常转换为业务层可处理的异常,还可以使用@ControllerAdvice和@ExceptionHandler进行全局异常处理。 17. **Spring如何集成MyBatis?** 通过配置MyBatis-Spring桥接库,可以...

    Jackson包(适合spring4.X版本的使用)

    本篇文章将深入探讨Jackson在Spring 4.X中的使用及其组件,以帮助开发者更好地理解和应用。 首先,我们来看一下Jackson的主要组件: 1. **jackson-databind**:这是Jackson的核心组件,负责对象与JSON之间的映射。...

    JAVA spring 系列案例50个和学习资料

    Spring系列第1篇:为何要学spring?Spring系列第2篇:控制反转(IoC)与依赖注入(DI)。Spring系列第3篇:Spring容器基本使用及原理。Spring系列第4篇:xml中bean定义详解(-)Spring系列第5篇:创建bean实例这些方式...

    spring3使用示例

    Spring框架是Java开发中不可或缺的一部分,它为应用程序提供了一个全面的基础设施,支持bean管理、依赖注入、面向切面编程(AOP)、数据访问/对象关系映射(DAO)、Web MVC等。Spring3作为其早期的一个版本,虽然...

    SpringQuartz的使用文档

    Spring对Quartz进行了集成,使其更易于在Spring应用程序中使用。Spring提供了`FactoryBean`类,如`SchedulerFactoryBean`,用于创建和管理Quartz的`Scheduler`实例。这使得我们可以利用Spring的依赖注入(DI)和管理...

    使用spring3D绘图

    在IT行业中,Spring框架是Java开发领域中广泛使用的开源框架,以其灵活性、模块化和强大的功能而备受青睐。"使用Spring3D绘图"这个主题则聚焦于Spring框架的一个特定应用,即如何利用Spring来创建三维图形和图表。在...

    spring-framework-4.1.6.RELEASE

    这个版本在2015年发布,为开发者提供了稳定、高性能和丰富的特性集,以便构建高质量的企业级Java应用程序。以下是对这个版本的详细解析: 1. **核心容器**: Spring的核心组件包括Bean工厂和依赖注入(DI)。4.1.6...

    Spring系列面试题129道(附答案解析)

    52、使用Spring框架的好处是什么? 使用Spring框架的好处包括: - 简化了企业级应用的开发。 - 提供了一致的编程和配置模型。 - 促进了最佳实践。 - 易于集成其他框架和组件。 - 支持声明式事务管理。 - 通过依赖...

    Spring 5.0 web 官方文档 转PDF

    这一部分的文档也适用于那些熟悉Spring但想要了解如何在Servlet环境中使用Spring的开发人员。除了Spring Web MVC之外,Spring框架还为反应式编程模型提供了支持,使得开发者可以根据需要选择传统的基于Servlet的Web...

    Spring+jsp老项目转Springboot的示例Demo

    本示例Demo主要展示了如何将一个基于Spring+jsp的传统项目转换为使用Spring Boot的新架构。Spring Boot以其简洁的配置、快速的启动和一站式的解决方案,成为了现代Java应用开发的首选框架。以下将详细介绍这个转换...

    Spring MVC使用Demo

    这个"Spring MVC使用Demo"提供了实践操作,帮助开发者深入理解Spring MVC的开发环境配置、注解的使用以及工作原理。 首先,Spring MVC的设计模式基于Model-View-Controller(MVC),它将应用程序的业务逻辑、数据和...

    十分钟上手spring boot

    - **为什么选择Spring Boot?** - 提供了自动配置机制来减少样板代码。 - 内置了一个小巧的嵌入式Web服务器(如Tomcat、Jetty等),使得部署更加简单。 - **Spring Boot的核心特点** - 简化配置:通过约定优于...

    Groovy在Spring中的简单使用

    Groovy 在 Spring 中的简单使用 Groovy 是一种敏捷的动态语言,用于 Java 虚拟机,可以与 Java 代码无缝集成。它的类 Java 语法对于 Java 开发人员来说很自然,且可以作为纯粹的脚本语言使用。在 Spring 中动态使用...

    spring攻略 第2版

    另外,Spring Cloud扩展了Spring Boot的功能,提供了服务发现、负载均衡、配置中心等一系列微服务相关的工具,为构建大规模分布式系统提供了便利。 Spring框架还包含对消息处理的支持,如Spring AMQP,它提供了对...

    Spring 整合 Scala 编程【转】

    标题 "Spring 整合 Scala 编程【转】" 暗示了本文将探讨如何在Spring框架中使用Scala语言进行编程。Scala是一种强大的、面向对象且支持函数式编程的编程语言,它与Java虚拟机(JVM)兼容,因此可以无缝集成到Spring...

    spring4.2.0对应jdk1.8spring,springMVC所有依赖包以及文档

    在Spring 4.2.0中,开发者可以使用JDK 1.8的Lambda表达式来编写简洁的回调函数,特别是在使用Spring的事件监听或者AOP切面时。此外,Stream API的引入使得集合操作变得更加高效和简洁,尤其在数据过滤、转换和聚合...

Global site tag (gtag.js) - Google Analytics