Spring(一)Spring的第一滴血

前言html

  开始工做了,可是一进来公司原本是作爬虫和数据分析的,可是走了一个后端的,致使我必需要去顶替他的工做。由于这个项目使用的是Spring、
  SpringMVC、Hibernate因此我又要去回忆一下了。毕竟好久都没有用了。java

  首先咱们来谈一谈软件的架构吧。web

1、软件应用分层架构

1.一、标准三层架构

  1)数据访问层spring

   主要是对原始数据(数据库或者文本文件等存放数据的形式)的操做层,而不是指原始数据,也就是说,是对数据的操做,而不是数据库

   数据库,具体为业务逻辑层或表示层提供数据服务.
  2)业务逻辑层编程

   主要是针对具体的问题的操做,也能够理解成对数据层的操做,对数据业务逻辑处理,若是说数据层是积木,那逻辑层就是对这些后端

   积木的搭建。具体的讲主要负责对数据层的操做。也就是说把一些数据层的操做进行组合。
  3)表示层安全

   主要表示WEB方式,若是逻辑层至关强大和完善,不管表现层如何定义和更改,逻辑层都能完善地提供服务。主要对用户的请求接受,服务器

   以及数据的返回,为客户端提供应用程序的访问。架构

1.二、标准三层架构优缺点

  1)优势
    1:开发人员能够只关注整个结构中的其中某一层;
    2:能够很容易的用新的实现来替换原有层次的实现;
    3:能够下降层与层之间的依赖;
    4:有利于标准化;
    5:利于各层逻辑的复用。
    6:结构更加的明确
    7:在后期维护的时候,极大地下降了维护成本和维护时间
  2)缺点
    1:下降了系统的性能。这是不言而喻的。若是不采用分层式结构,不少业务能够直接造访数据库,以此获取相应的数据,

      现在却必须经过中间层来完成。
    2:有时会致使级联的修改。这种修改尤为体如今自上而下的方向。若是在表示层中须要增长一个功能,为保证其设计符合

      分层式结构,可能须要在相应的业务逻辑层和数据访问层中都增长相应的代码。
    3:增长了开发成本。

1.三、WEB技术的四层(五层)结构(了解)

  所谓的四层架构的分法,就是想把软件设计师工做量降下来,减小重复性的代码,提升开发速度,使软件有至关好的可维护、易扩展,这种四层架构

  对多人开发同软件来讲,能够有个清晰的思路。我把系统分红表示层(UI)、业务逻辑层(Bussiness/Service)、数据访问层(DataAccess/Dao)、

  数据实体层(Domain)。若是你还考虑到数据库设计的话,就是五层架构。

  1)关注request/response动做
    解决一个模型的UI显示
    处理一些基本的格式逻辑以及非业务逻辑相关的验证逻辑
    处理从其它层抛出的异常:
  2)DAO
    用来与持久化的数据库,如关系数据库交互
    提供一种查询语言
    可能提供ORMapping的机制
    可使用JDBC,hibernate,Ibatis,JDO,Entity Beans等。
  3)Deomain
    包含一系列能够贯通上边所说两层的业务对象
    包含其余域对象之间有交互关系
    可能又丰富的业务逻辑
    就是把实际数据库里的映射到内存中,也称为OMapping(能经过ORM获取相应的对象)
    域对象之间可能存在依赖关系
  4)Service
    将业务逻辑的业务暴露给表现层
    管理容器级别的服务,例如事务,安全,数据访问逻辑

2、什么是Spring?

  Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著做Expert One-On-One J2EE Development and Design

  中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而建立的。框架的主要优点之一就是其分层架构,分层架构容许使用者选择使用哪一

  个组件,同时为 J2EE 应用程序开发提供集成的框架。Spring使用基本的JavaBean来完成之前只可能由EJB完成的事情。然而,Spring的用途不只限于服务器端

  的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用均可以从Spring中受益。Spring的核心是控制反转(IoC)和面向切面(AOP)。简单来讲,

  Spring是一个分层的JavaSE/EE full-stack(一站式) 轻量级开源框架

  注释:   

    轻量级的容器:
      容器:spring容器帮咱们管理业务逻辑层,里边有不少业务逻辑对象,有对象就有对象的生命周期的管理(建立,销毁)
      轻量级:容器给予的业务逻辑对象多少种服务?spring给用户提供的服务彻底有用户本身决定,spring想用什么服务本身开启使用。

          可是重量级的都是只要你用就把全部的服务都给你,不能本身定制。
      spring容器历来不能独立运行,必定借助于其余容器启动,或者借助web容器启动,或者ejb容器启动
    特色:
      应用模块之间耦合度小,组件都是可重用的,都是各自打包的。

3、Spring的优势(为何使用Spring?)

  1)动态解藕,方便开发,面向接口设计
    经过Spring提供的IoC容器,咱们能够将对象之间的依赖关系交由Spring进行控制,避免硬编码所形成的过分程序耦合。有了Spring,用户没必要再为单实例模式类、

    属性文件解析等这些很底层的需求编写代码,能够更专一于上层的应用
  2)方便程序的测试TDD(Test-Driven Development)
    能够用非容器依赖的编程方式进行几乎全部的测试工做,在Spring里,测试再也不是昂贵的操做,而是随手可作的事情。
  3)下降Java EE API的使用难度
    Spring对不少难用的Java EE API(如JDBC,JavaMail,远程调用等)提供了一个简单的封装层,经过Spring的简易封装,这些Java EE API的使用难度大为下降。
  4)方便集成各类优秀框架
    Spring不排斥各类优秀的开源框架,相反,Spring能够下降各类框架的使用难度,Spring提供了对各类优秀框架(如Struts,Hibernate、Hessian、Quartz)等的直接支持。
  5)AOP编程的支持
    经过Spring提供的AOP功能,方便进行面向切面的编程,许多不容易用传统OOP实现的功能能够经过AOP轻松应付。
  6)声明式事务的支持
    在Spring中,咱们能够从单调烦闷的事务管理代码中解脱出来,经过声明式方式灵活地进行事务的管理,提升开发效率和质量
  7)对异常的处理方式,全部的都转换成Unchecked的。
  8)它不是一个一体化的解决方案。
  9)良好的设计,容易扩展,不少可重用的组件。

4、Spring体系结构

  详细图:

  

  大体图:

  

   1)核心容器:核心容器提供 Spring 框架的基本功能(Spring Core)。核心容器的主要组件是 BeanFactory,它是工厂模式的实现。BeanFactory 使用

    控制反转(IOC) 模式将应用程序的配置和依赖性规范与实际的应用程序代码分开

  二、Spring 上下文:Spring 上下文是一个配置文件,向 Spring框架提供上下文信息。Spring 上下文包括企业服务,例如JNDI、EJB、电子邮件、国际化、

    校验和调度功能。

  三、Spring AOP:经过配置管理特性,Spring AOP 模块直接将面向切面的编程功能集成到了 Spring 框架中。因此,能够很容易地使 Spring 框架管理的任何对象支持AOP。

    Spring AOP 模块为基于 Spring 的应用程序中的对象提供了事务管理服务。经过使用 Spring AOP,不用依赖 EJB 组件,就能够将声明性事务管理集成到应用程序中。

  四、Spring DAO:JDBCDAO抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不一样数据库供应商抛出的错误消息。异常层次结构简化了错误处理,

    而且极大地下降了须要编写的异常代码数量(例如打开和关闭链接)。Spring DAO 的面向 JDBC 的异常听从通用的 DAO 异常层次结构。

  五、Spring ORM:Spring 框架插入了若干个ORM框架,从而提供了 ORM 的对象关系工具,其中包括JDO、Hibernate和iBatisSQL Map。全部这些都听从 Spring 的通用事务

    和 DAO 异常层次结构。

  六、Spring Web 模块:Web 上下文模块创建在应用程序上下文模块之上,为基于 Web 的应用程序提供了上下文。因此,Spring框架支持与 Jakarta Struts 的集成。

    Web 模块还简化了处理多部分请求以及将请求参数绑定到域对象的工做。

  七、Spring MVC 框架:MVC框架是一个全功能的构建 Web应用程序的 MVC 实现。经过策略接口,MVC框架变成为高度可配置的,MVC 容纳了大量视图技术,其中包括 JSP、

    Velocity、Tiles、iText 和 POI。模型由javabean构成,存放于Map;视图是一个接口,负责显示模型;控制器表示逻辑代码,是Controller的实现。Spring框架的功能能够

    用在任何J2EE服务器中,大多数功能也适用于不受管理的环境。Spring 的核心要点是:支持不绑定到特定 J2EE服务的可重用业务和数据访问对象。毫无疑问,

    这样的对象能够在不一样J2EE 环境(Web 或EJB)、独立应用程序、测试环境之间重用。

5、Spring的特征

  1)轻量

    从大小与开销两方面而言Spring都是轻量的。完整的Spring框架能够在一个大小只有1MB多的JAR文件里发布。而且Spring所需的处理开销也是微不足道的。

    此外,Spring是非侵入式的:典型地,Spring应用中的对象不依赖于Spring的特定类。

  2)控制反转

    Spring经过一种称做控制反转(IoC)的技术促进了低耦合。当应用了IoC,一个对象依赖的其它对象会经过被动的方式传递进来,而不是这个对象本身建立

    或者查找依赖对象。你能够认为IoC与JNDI相反——不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。

  3)面向切面

    Spring提供了面向切面编程的丰富支持,容许经过分离应用的业务逻辑与系统级服务(例如审计(auditing)和事务(transaction)管理)进行内聚性的开发。

    应用对象只实现它们应该作的——完成业务逻辑——仅此而已。它们并不负责(甚至是意识)其它的系统级关注点,例如日志或事务支持。

  4)容器

    Spring包含并管理应用对象的配置和生命周期,在这个意义上它是一种容器,你能够配置你的每一个bean如何被建立——基于一个可配置原型(prototype),

    你的bean能够建立一个单独的实例或者每次须要时都生成一个新的实例——以及它们是如何相互关联的。然而,Spring不该该被混同于传统的重量级的EJB容器,

    它们常常是庞大与笨重的,难以使用。

  5)框架

    Spring能够将简单的组件配置、组合成为复杂的应用。在Spring中,应用对象被声明式地组合,典型地是在一个XML文件里。Spring也提供了不少

    基础功能(事务管理、持久化框架集成等等),将应用逻辑的开发留给了你。

  6)MVC

  Spring的做用是整合,但不只仅限于整合,Spring 框架能够被看作是一个企业解决方案级别的框架。客户端发送请求,服务器控制器(由DispatcherServlet实现的)

  完成请求的转发,控制器调用一个用于映射的类HandlerMapping,该类用于将请求映射到对应的处理器来处理请求。HandlerMapping 将请求映射到对应的处理器

  Controller(至关于Action)在Spring 当中若是写一些处理器组件,通常实现Controller 接口,在Controller 中就能够调用一些Service 或DAO 来进行数据操做

   ModelAndView 用于存放从DAO 中取出的数据,还能够存放响应视图的一些数据。 若是想将处理结果返回给用户,那么在Spring 框架中还提供一个视图组件ViewResolver,

  该组件根据Controller 返回的标示,找到对应的视图,将响应response 返回给用户。

6、Spring核心组件(咱们主要学习的是IOC和AOP模块)

(1)Spring Core(IOC) 核心容器

    提供组件的建立、装备、销毁
(2)Spring Context Spring上下文

    是一个接口ApplicationContext(继承自BeanFactory接口)的实现
(3)Spring Web容器

    web应用上下文,是webApplicationContext接口的实现
(4)SpringDAO容器

    是SpringDAO 支持模块,是为了简化DAO的使用
(5)SpringORM
(6)Spring AOP

    对AOP编程支持的模块
(7)Spring MVC

    相似于Spring表示层的一个框架

 

参考文献:

  http://www.cnblogs.com/ysocean/p/7466191.html

相关文章
相关标签/搜索