Spring框架学习总结

1. 什么是Spring框架?

  1.1 概念

    SpringFrameWork是轻量级容器,它可以使用Struts和webwork等众多的web应用程序结合使用,也可以单独使用。

  1.2 核心技术

    面向切面(aspect-oriented programming AOP)  控制反转(inversion of control IOC)。

  1.3 特点

    轻量:不依赖于其他的对象,单独使用容器:xml中设置声明周期和配置。

     框架:系统中的对象通过xml文件配置组合起来的。

2. Spring框架由哪些模块组成,模块有哪些功能?

  2.1 Spring Core

    Core封装包是框架的最基础部分,提供IOC和依赖注入特性。基础概念是:BeanFactory,它提供对Factory模式的经典实现来消除对程序性单例模式的需要,并真正地允许从程序逻辑中分离出依赖关系和配置。

  2.2 Spring Context

    构建于Core封装包基础上的Context封装包,提供了一种框架式的对象访问方法,有点像JNDI注册器。Context封装包的特性得自于Beans封装包,并添加了对国际化(I18N)的支持(例如资源绑定),事件传播,资源装载方式和Context的透明创建,比如Servlet容器。

  2.3 Spring DAO

    DAO(Data Access Object)提供了JDBC抽象层,它可消除较长的JDBC编码和解析数据库产商特有的错误代码。并且,JDBC封装包还提供了一种比编程性更好的声明性事务管理方法,不仅仅是实现了特定接口,而且对所有的POJOs(plain old Java object)都适用。

  2.4 Spring ORM

    ORM封装包提供了常用的“对象/关系”映射APIs集成层。其中包括JPA、JDO、Hibernate和iBatis,利用ORM封装包,可以混合使用所有Spring提供的特性进行“对象/关系”映射,如前面提到的简单声明性事物管理。

  2.5 Spring AOP

    AOP模块是Spring的AOP库,提供了AOP(拦截器)机制,并提供常用的拦截器,供用户自定义和配置。

  2.6 Spring web

    web模块提供对常见框架如Struts1,webwork(Struts2),jsf的支持,Spring能够管理这些框架,将Spring的资源注入给框架,也能在这些框架的前后插入拦截器。

  2.7 Spring web MVC

    Spring中的MVC封装包提供了web应用的Model-View-Controller(MVC)实现。Spring的MVC框架并不是仅仅提供一种传统的 实现,它提供了一种清晰的分离模型,在领域模型代码和web from之间。并且还可以借助Spring框架的其他特性。

3. 为什么需要使用Spring?

  1.方便解耦,简化开发

    通过Spring提供的IOC容器,可以将对象之间的依赖关系交由Spring进行控制,避免硬编码造成的过度程序耦合。

  2.AOP编程的支持

    通过Spring提供的AOP功能,方便进行面向切面的编程,如性能监测,事务管理,日志记录等。

  3.声明式事务的支持

  4.方便集成各种优秀框架

  5.降低java EE API的使用难度

    如对JDBC,JavaMail,远程调用提供了简便封装

4. 什么是IOC,为什么使用IOC?

  IoC全称Iversion of Controller,控制反转。

    概念是说不用创建对象,而只需要描述它如何被创建。不在代码里直接组装组件和服务,但是要在配置文件里描述哪些组件需要哪些服务,之后一个容器(IOC)容器负责把他们组装。

5. 什么是AOP,为什么使用AOP?

  AOP全称aspect-oriented programming面向切面编程。

    AOP,面向切面编程,就是吧可重用的功能提取出来,然后将这些通用功能在合适的时织入到应用程序中,比如事务管理,权限控制,日志记录,性能统计等。

    AOP并没有帮助我们解决任何新的问题,它只是提供了一种更好的办法,能够用最少的工作量来解决现有的一些问题,使得系统更加健壮,可维护性更好。

6. 什么是Spring的事物管理?

  事务就是对一系列的数据库操作(比如插入多条数据)进行统一的提交或者回滚操作,如果插入成功,那么一起成功,如果中间有一条出现异常,那么回滚之前的所有操作。这样可以防止脏数据的出现,防止数据库的数据发生错误。

  开发中为了避免这一种情况一般会进行事物管理。

  Spring的声明式事务通常是指在配置文件中对事务进行配置声明,其中包括很多声明属性,它是通过Spring Proxy帮做代理,自己不用额外的写代码,只要在Spring配置文件中声明就好,通常用在数据库的操作里面。

  编程式事务就是指通过硬编码的方式做事务处理,这种处理方式需要写代码,事务中的逻辑可以自己定制;可以是数据库的东西,也可以是其他操作。

  Spring中也有自己的事务管理机制,一般是用TransactionMananger进行管理,可以通过Spring的注入来完成此功能。

7. Spring框架支持哪几种bean作用域?

  singleton:默认值,bean在每个Spring ioc容器只有一个实例。

   prototype:一个bean的定义可以有多个实例。

   request:每次http请求都活创建一个bean,该作用域仅在基于web的spring ApplicationContext情形下有效。

   session:在一个HTTP Session中,一个人bean定义对应一个实例,该作用域仅在基于web的Spring ApplicationContext情形下有效。

8. Spring获取连接池的几种方式?

  1.DBCP 数据源

   2.C3P0 数据源

   3.Spring的数据源实现类(DriverManagerDataSource)

   4.获取JNDI数据源

posted @ 2018-11-24 19:40  久孤丶  阅读(634)  评论(0编辑  收藏  举报