您的位置:首页 > 编程语言 > Java开发

Spring学习笔记(五)--Spring概述

2018-01-18 17:13 260 查看

为什么使用Spring?

     Spring是一个开源的框架,是为了解决企业级应用开发复杂性而创建的。在没有使用Spring时,在一个对象调用另一个对象时,需要程序员自己编写代码new出被调用对象实例,调用方和被调用方有很强的耦合,被调用方的生命周期需要由调用方控制。对于该问题的初步解决方案是使用工厂创建对象,但是这个代码还是需要我们自己去写。为了解决这种高耦合,开发复杂的情况,Spring应运而生了。Spring的特点如下:
      轻量级:大小与开销方面Spring都是轻量级的
非侵入式:Spring应用中的对象不依赖于Spring的特定类
控制反转:Spring通过一种控制反转(IOC)的技术促进了松耦合,当应用了IOC一个对象依赖的其他对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象
切面编程:Spring提供了切面编程的丰富支持,允许分离应用的业务逻辑与服务
容器:Spring包含并管理应用对象的配置和生命周期,控制对象生存周期的不再是引用他的对象,而是Spring
框架:Spring提供了一站式框架,而且可以无缝整合其他框架,Spring推动应用的设计风格向面向对象及面向接口编程转变,提高了代码的重用性和可测试性。Spring改进了体系结构的选择,虽然作为应用平台,Spring可以帮助我们选择不同的技术实现。

框架设计

     


     核心容器:包含spring-core,spring-beans,spring-context,spring-expression四个模块。
     spring-core和spring-beans模块提供了整个框架最基础的部分,包括IOC(Inversion of Control 控制反转)和Dependency Injection(DI 依赖注入),其中,不仅定义了IOC容器的最基本接口(BeanFactory),也提供了一系列这个接口的实现,除此之外还提供了一些应用上下文供用户使用,例如我们常用的ClassPathXmlApplicationContext。spring-expression模块提供了一种强大的用于在运行时查询操作对象的表达式语言,该语言支持对属性值,属性参数,方法等调用,从Spring IOC容器中根据名称获得对象。
     spring-aop模块提供了AOP面向切面的编程实现,从传统的纵向扩展中解脱,达到逻辑与服务分离的效果,分离的spring-aspects模块集成了AspectJ,在这里声明一下AspectJ并不是Spring的一部分。
      spring-instrument模块提供了类instrumentation支持和使用在某些应用服务器上的类加载器实现。
      spring-jdbc模块:提供了jdbc的抽象层。
      spring-tx模块:提供了支持实现特殊接口和声明式事务的管理
      spring-orm模块:spring-orm模块为流行的对象-关系映射api提供集成层
     spring-web模块:提供了基本的面向web的集成特性
     spring -webmvc模块(也称为web servlet模块)包含web应用程序的Spring模型-视图-控制器(MVC)实现。Spring的MVC框架为域模型代码和web表单提供了清晰的分离,并与Spring框架的所有其他特性集成在一起。
     spring-test模块:支持单元测试和集成测试(使用Junit或者spring的组件)

总结

     spring还可实现"零配置",后续依次介绍依赖注入的三种方式,bean相关(实例化的三种方式,生命周期等),ioc底层原理及AOP的原理及使用方法等。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  spring