写点什么

一篇文章告诉你什么是 Spring

用户头像
愚者
关注
发布于: 12 小时前

 

什么是 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 结构体系



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。

用户头像

愚者

关注

还未添加个人签名 2021.07.22 加入

还未添加个人简介

评论

发布
暂无评论
一篇文章告诉你什么是Spring