一篇文章告诉你什么是 Spring
什么是 spring
spring 是分层的 javaEE/SE full-stack(一站式)轻量开源框架。
我们常说的 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 的好处
低侵入式设计,代码污染极低
独立于各种应用服务器,基于 spring 框架的应用,可以真正实现一次编码,到处运行的承诺
spring 的 DI 机制降低了业务对象替换的复杂性,提高了组件之间的解耦
spring 的 AOP 支持将一些通用任务如安全、事物、日志等进行集中式管理,从而提供更好的复用
spring 的 ORM 和 DAO 提供了与第三方持久层框架的良好整合,并简化了底层的数据库访问
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。
评论