zoukankan      html  css  js  c++  java
  • spring框架的总结

    http://www.cnblogs.com/wangzn/p/6138062.html

     大家好,相信Java高级工程师对spring框架都很了解吧!那么我以个人的观点总结一下spring,希望大家有所帮助。

    一、内容纲要

      1、spring的起源和背景

      2、spring简介

      3、spring的核心模块

      4、springIOC和AOP

      5、为什么要使用spring

      6、spring的目的?意义?

      7、spring的优缺点

      8、spring带给我们什么

      9、spring能做什么

    二、具体内容

      1、spring的起源和背景

      Rod Johson在2002年编著的《Expert one to one J2EE design and development》一书中,对Java EE正统框架臃肿、低效、脱离现实的种种现状提出了质疑,并积极寻求探索革新之道。以此书为指导思想,他编写了interface21框架,这是一个力图冲破Java EE传统开发的困境,从实际需求出发,着眼于轻便、灵巧,易于开发、测试和部署的轻量级开发框架。Spring框架即以interface21框架为基础,经过重新设计,并不断丰富其内涵,于2004年3月24日,发布了1.0正式版。

      Spring致力于J2EE应用的各层的解决方案,而不是仅仅专注于某一层的方案。可以说Spring是企业应用开发的“一站式”选择,并贯穿表现层、业务层及持久层。然而,Spring并不想取代那些已有的框架,而与它们无缝地整合。

      spring的设计目标:遵循一系列的接口标准,这样的好处是只需要简单的Java对象或者Javabean就能进行Java EE开发,这样开发的入门、测试、应用部署都得到了简化。

      2、spring简介

      Spring是一个开源的用于简化采用Java语言开发企业级程序的一个分层的框架。

    Spring是一个开源框架,它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。

      3、spring的核心模块

       Spring 框架是一个分层架构,由 7 个定义良好的模块组成。Spring 模块构建在核心容器之上,核心容器定义了创建、配置和管理 bean 的方式,组成 Spring 框架的每个模块(或组件)都可以单独存在,或者与其他一个或多个模块联合实现。每个模块的功能如下:

       

           1)Spring Core:核心容器,BeanFactory提供了组件生命周期的管理,组件的创建,装配,销毁等功能

        SpringContext:ApplicationContext,扩展核心容器,提供事件处理、国际化等功能。它提供了一些企业级服务的功能,提供了JNDI,EJB,RMI的支持。

           2) Spring AOP:提供切面支持

           3) Spring DAO:提供事务支持,JDBC,DAO支持

           4) Spring ORM:对流行的O/R Mapping封装或支持

           5) Spring Web:提供Web应用上下文,对Web开发提供功能上的支持,如请求,表单,异常等。

           6) Spring Web MVC:全功能MVC框架,作用等同于Struts。

         7)核心容器:核心容器提供 Spring 框架的基本功能。核心容器的主要组件是 BeanFactory,它是工厂模式的实现。BeanFactory 使用控制反转 (IOC)模式将应用程序的配置和依赖性规范与实际的应用程序代码分开。

      4、springIOC和AOP

          

        4、1、IoC的概念

        IoC,Inversion of Control,控制反转。

          对象的协作关系由对象自己负责。

          依赖注入:对象的协作关系有容器来建立。

        4、2、IoC的类型

          (1) 基于特定接口(侵入式方案)

          (2) 基于set方法

          (3) 基于构造器

        4、3、Spring容器

          Spring容器负责生成、组装、销毁组件,并负责事件处理、国际化等功能。

          (1) BeanFactory<interface>

            ① 核心容器,负责组件生成和装配

            ② 实现主要包括Xml BeanFactory

          (2) ApplicationContext

          (3) WebApplicationContext

          (4) ……

        4、4、IoC的使用

          Resource:interface,用来包装资源

          xmlBeanFactory:BeanFactory的一个实现,使用Resource对象来查找配置文件

          BeanFactory.gerBean(“BeanId”):取得以参数命名,或者Id等于参数值的一个Bean实例。

          BeanFactory(容器)在默认情况下,会采用单例方式返回对象。容器只到调用getBean方法时,才会实例化某个对象。

          (1) Spring可以采用XML或者.properties文件作配置

          (2) 配置文件(XML)

            根元素<beans>可以有多个<bean>子元素,每个<bean>代表一个需要装配的对象。

        1、setter注入

          (1) 注入简单属性(String和8中基本类型)

            <beans>

                <bean id=”BeanId” class=”classpath” autowire=” ” dependency-check=” ”>

                  <property name=”parameterName”>

                    <value>parameterValue</value>

                  </property>

                </bean>

            </beans>

          对于基本类型,Spring容器会自动作类型转换,以便赋值。

        (2) 注入对象

          <bean>

            <ref local=”BeanId”>

          </bean>

          A、让Spring容器在当前配置文件中找到相应的Bean,并调用set方法,注入该Bean。

          B、将一个Bean的定义嵌套在另一个Bean中(可读性差),被嵌套的Bean不能采用getBean()返回

          C、采用<ref bean=” ”>搜索多个配置文件来注入

          (3) 注入集合类型

            ① Set

              Set中存放字符串,对象,集合,不允许重复

            ② List

              List中可以放入字符串,对象,List

            ③ Map

              Map 有<entry>子元素来存取key,value,key只能为String

            ④ Properties

              Properties有<props>子元素

     spring的AOP   

    一、AOP(Aspect-oriented programming,面向切面编程):

      什么是AOP?

      定义:将程序中的交叉业务逻辑提取出来,称之为切面。将这些切面动态织入到目标对象,然后生成一个代理对象的过程。

    二、AOP核心概念

      1、Aspect(切面)

      切面,是对交叉业务逻辑的统称。

      2、Joinpoint(连接点)

      连接点,指切面可以织入到目标对象的位置(方法,属性等)。

      3、Advice(通知)

      通知,指切面的具体实现。

      4、Pointcut(切入点)

      切入点,指通知应用到哪些类的哪些方法或属性之上的规则。

      5、Introduction(引入)

      引入,指动态地给一个对象增加方法或属性的一种特殊的通知。

      6、Weaving(织入)

      织入,指将通知插入到目标对象。

      7、Target(目标对象)

      目标对象,指需要织入切面的对象。

      8、Proxy(代理对象)

      代理对象,指切面织入目标对象之后形成的对象。

    三、Spring AOP原理

      采用动态代理模式。

      Spring AOP采用动态代理的过程:

    (1) 将切面使用动态代理的方式动态织入到目标对象(被代理类),形成一个代理对象;

    (2) 目标对象如果没有实现代理接口,那么Spring会采用CGLib来生成代理对象,该代理对象是目标对象的子类;

    (3) 目标对象如果是final类,并且也没实现代理接口,就不能运用AOP。

    四、Spring的通知

    1、Spring的通知类型

    (1) MethodBeforeAdvice

      类全名:org.springframework.aop.MethodBeforeAdvice

      在方法调用之前,做处理。

      不能够改变返回值

      不能够改变目标方法的流程,也不能中断流程的处理过程(除非抛出异常)

    (2) AfterReturningAdvice

      类全名:org.springframework.aop.AfterReturningAdvice  

    在方法调用之后,做处理。

      不能够改变返回值

      不能够改变目标方法的流程,也不能中断流程的处理过程(除非抛出异常)

    (3) MethodInterceptor

      类全名:org.aopalliance.intercept.MethodInterceptor

    在方法调用之前以及之后,做处理。

      可以改变返回值,也可以改变流程。

    (4) ThrowsAdvice

      类全名:org.springframework.aop.ThrowsAdvice

    在方法抛出异常后,做处理。

      当该通知处理完异常后,会简单地将异常再次抛出给目标调用方法。

    2、配置过程:

      (1)配置目标对象

      (2)配置通知

      (3)利用ProxyFactoryBean将通知织入到目标对象,形成一个动态代理对象

      (4)客户端使用动态代理来访问目标对象的方法。

      在默认情况下,通知会应用到所有的方法之上。

    Pointcut:

    根据方法和类决定在什么地方织入通知

      Advisor:

      将Pointcut与Advice结合到一起。

      5、为什么要使用spring

          因为只要是OOP开发的应用,都是由对象与对象之间进行协作进行工作的,那么对象与对象之间的关系管理(依赖关系)如果需要自己用代码进行维护很麻烦。用了Spring就可以省去这麻烦的工作了

      

        Spring是独特的,因为若干个原因:

          ◆它定位的领域是许多其他流行的framework没有的。Spring关注提供一种方法管理你的业务对象。

          ◆ Spring是全面的和模块化的。Spring有分层的体系结构,这意味着你能选择使用它孤立的任何部分,它的架构仍然是内在稳定的。因此从你的学习中,你可得到最大的价值。例如,你可能选择仅仅使用Spring来简单化JDBC的使用,或用来管理所有的业务对象。

          ◆它的设计从底部帮助你编写易于测试的代码。Spring是用于测试驱动工程的理想的framework。

    Spring对你的工程来说,它不需要一个以上的framework。Spring是潜在地一站式解决方案,定位于与典型应用相关的大部分基础结构。它也涉及到其他framework没有考虑到的内容。

      6、spring的目的?意义?

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

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

          ◆范围:任何Java应用

          意义:1,降低开发成本.2,方便使用.

      7、spring的优缺点

        7.1. 提供了一种管理对象的方法,可以把中间层对象有效地组织起来。一个完美的框架“黏合剂”。

        7.2. 采用了分层结构,可以增量引入到项目中。

        7.3. 有利于面向接口编程习惯的养成。

        7.4. 目的之一是为了写出易于测试的代码。

        7.5. 非侵入性,应用程序对Spring API的依赖可以减至最小限度。

        7.6. 一致的数据访问介面。

        7.7. 一个轻量级的架构解决方案。

        7.8缺点:目前不支持集群

      8、spring带给我们什么

        ◆方便解耦,简化开发

        通过Spring提供的IoC容器,我们可以将对象之间的依赖关系交由Spring进行控制,避免硬编码所造成的过度程序耦合。有了Spring,用户不必再为单实例模式类、属性文件解析等这些很底层的需求编写代码,可以更专注于上层的应用。

        ◆AOP编程的支持

        通过Spring提供的AOP功能,方便进行面向切面的编程,许多不容易用传统OOP实现的功能可以通过AOP轻松应付。

        ◆声明式事务的支持

        在Spring中,我们可以从单调烦闷的事务管理代码中解脱出来,通过声明式方式灵活地进行事务的管理,提高开发效率和质量。

        ◆方便程序的测试

        可以用非容器依赖的编程方式进行几乎所有的测试工作,在Spring里,测试不再是昂贵的操作,而是随手可做的事情。

        ◆方便集成各种优秀框架

        Spring不排斥各种优秀的开源框架,相反,Spring可以降低各种框架的使用难度,Spring提供了对各种优秀框架(如Struts,Hibernate、Hession、Quartz)等的直接支持。

        ◆降低Java EE API的使用难度

        Spring对很多难用的Java EE API(如JDBC,JavaMail,远程调用等)提供了一个薄薄的封装层,通过Spring的简易封装,这些Java EE API的使用难度大为降低。

        ◆Java 源码是经典学习范例

      9、spring能做什么

        Spring的主要目的是使J2EE易用和促进好编程习惯。

        Spring的目标是使已存在的技术更加易用。

  • 相关阅读:
    231. Power of Two
    204. Count Primes
    205. Isomorphic Strings
    203. Remove Linked List Elements
    179. Largest Number
    922. Sort Array By Parity II
    350. Intersection of Two Arrays II
    242. Valid Anagram
    164. Maximum Gap
    147. Insertion Sort List
  • 原文地址:https://www.cnblogs.com/feng9exe/p/7460998.html
Copyright © 2011-2022 走看看