spring(一)介绍

269 阅读4分钟

什么是spring

spring是分层的javaEE/SE full-stack(一站式)轻量开源框架。

官网:spring.io

我们常说的spring其实是指spring Framework(spring 框架)

为什么学习spring

spring特点

  • 方便解耦,简便开发

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

  • AOP 编程的支持

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

  • 声明式事物支持

    在spring中,通过声明式方式灵活的进行事物管理,提高开发效率和质量。

  • 方便程序测试

    可以用非容器依赖的编程方式进行几乎所有的测试工作,在spring里,测试不再是昂贵的操作,而是随手可做的事情。例如:spring对Junit4支持,可以通过注解方式方便的测试spring程序。

  • 方便集成各种优秀框架

    spring不排斥各种优秀的开源框架,相反,spring可以降低各种框架的使用难度,spring提供了对各种优秀框架的直接支持。

  • 降低JavaEE API使用难度

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

  • Java源码式经典学习范例

    spring的源码设计精妙、结构清晰、匠心独运,处处体现着大师对Java设计模式灵活运用以及对Java技术高深造诣。spring框架源码无疑是Java技术的最佳实践范例。

使用spring的好处

  1. 低侵入式设计,代码污染极低
  2. 独立于各种应用服务器,基于spring框架的应用,可以真正实现一次编码,到处运行的承诺
  3. spring的DI机制降低了业务对象替换的复杂性,提高了组件之间的解耦
  4. spring的AOP支持将一些通用任务如安全、事物、日志等进行集中式管理,从而提供更好的复用
  5. spring的ORM和DAO提供了与第三方持久层框架的良好整合,并简化了底层的数据库访问
  6. spring并不强制应用完全依赖与spring,开发者可自由选用spring框架的部分或者全部

耦合与内聚

耦合性(Coupling):也叫耦合度,是对模块间关联程度的度量。

  • 在软件工程中,耦合指的就是对象之间的依赖性。对象之间的耦合越高,维护成本越高。因此对象的设计类和部件之间的耦合最小。
  • 软件设计中通常耦合度和内聚度作为衡量模块独立程度的标准。
  • 划分模块的一个准则就是高内聚低耦合。

内聚性:内聚标志一个模块内各个元素彼此结合的紧密度,它是信息隐蔽和局部化概念的自然扩展。

  • 内聚是从功能的角度来度量模块内的联系,一个好的内聚模块应当做好一件事。
  • 内聚和耦合事密切相关的,同其他模块存在高耦合的模块意味着低内聚,而高内聚的模块意味着该模块同其他模块之间是低耦合。
  • 在进行软件设计是,应力争做到高内聚,低耦合。

spring结构体系

201BC3E6-6C82-4866-B112-D3127098D1AF.png

spring容器框架已集成很多个模块,这些模块分布在以下模块中:

  • 核心容器(Core Container)
  • 数据访问/集成(Data Access/Integration)层
  • Web层
  • AOP(Aspect Oriented Programming)模块
  • 植入(Instrumentation)模块
  • 消息传输(Messaging)
  • 测试(Test)模块

spring的核心

  • IoC(核心中的核心):Inverse of Control,控制反转。对象的创建权利由程序反转给spring框架。

  • DI:Dependency Injection,依赖注入。在spring框架中负责创建Bean对象时,动态的将依赖对象注入到Bean组件中。

  • AOP:Aspect Oriented Programming,面向切面编程。在不修改目标对象的源代码情况下,增强IoC容器中Bean的功能。

  • spring容器:指的就是IoC容器,底层是一个BeanFactory。