【Spring】Spring复习之概述

一、Spring概述

1. Spring是什么?

Spring是分层的Java SE/EE应用 full-stack 轻量级开发框架,以IOC(Inverse Of Course:控制反转)和AOP(Aspect Oriented Programming:面向切面编程)为内核,提供了展现层Spring MVC和持久层Spring JDBC以及业务层事务管理等众多的企业级应用技术,还能整合开源世界众多著名的第三方框架和类库,逐渐成为使用最多的Java EE企业级应用开源框架。

2. Spring 的发展历程

		1997 年 IBM 提出了 EJB 的思想
		1998 年,SUN 制定开发标准规范 EJB1.0
		1999 年,EJB1.1 发布
		2001 年,EJB2.0 发布
		2003 年,EJB2.1 发布
		2006 年,EJB3.0 发布
		==Rod Johnson(spring 之父)==
		Expert One-to-One J2EE Design and Development(2002)
		阐述了 J2EE 使用 EJB 开发设计的优点及解决方案
		Expert One-to-One J2EE Development without EJB(2004)
		阐述了 J2EE 开发不使用 EJB 的解决方式(Spring 雏形)
		== 2017 年 9 月份发布了 spring 的最新版本 spring 5.0 通用版(GA) ==

3. Spring 的优势

(1)方便解耦,简化开发
通过 Spring 提供的IOC容器,可以将对象间的依赖关系交由Spring进行控制,避免硬编码所造成的过度程序耦合。用户也不必在位单例模式类、属性文件解析等这些很底层的需求编写代码,可以更专注于上层的应用。
(2)AOP编程的支持
通过Spring 的AOP功能,方便进行面向切面的编程,许多不容易用传统OOP实现的功能可以通过AOP轻松应付。
(3)声明式事务的支持
可以将我们从单调烦闷的事务管理代码中解脱出来,通过声明式方式灵活的进行事务的管理,提高开发效率和质量。
(4)方便程序的测试
可以用非容器以来的编程方式进行几乎所有的测试工作,测试不在是昂贵的操作,而是随手可做的事情。
(5)方便集成各种优秀框架
Spring可以降低各种框架的使用难度,提供了对各种优秀框架(Struts、Hibernate、Hessian、Quartz等)的直接支持。
(6)降低JavaEE API的使用难度
Spring 对JavaEE API(如JDBC、JavaMail、远程调用等)进行了薄薄的封装层,使这些API的使用难度大为降低。
(7)Java 源码是经典学习范例
Spring 的源代码设计精妙、结构清晰、匠心独用,处处体现着大师对 Java 设计模式灵活运用以
及对 Java 技术的高深造诣。它的源代码无意是 Java 技术的最佳实践的范例。

4. Spring 的体系结构
【Spring】Spring复习之概述

二、IOC的概念和作用

1. 什么是程序的耦合

耦合性(Coupling),也叫耦合度,是对程序模块间关联程度的度量。耦合的轻若取决于模块间接口的复杂性、调用模块的方式以及通过界面传送数据的多少。模块间的耦合度是指模块之间的依赖关系,包括控制关系、调用关系、数据传递关系。模块间联系越多,其耦合性越强,同时表明其独立性越差(降低耦合度,可以提高其独立性)。耦合性存在于各个领域,而非软件设计中独有的。

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

总结:耦合是影响软件复杂程度和设计质量的一个重要因素,在设计上我们应采用以下原则:如果模块间必须存在耦合,就尽量使用数据耦合,少用控制耦合,限制公共耦合的范围,尽量避免使用内容耦合。

内聚与耦合
内聚标志一个模块内各个元素彼此结合的紧密程度,它是信息隐蔽和局部化概念的自然扩展。内聚是从
功能角度来度量模块内的联系,一个好的内聚模块应当恰好做一件事。它描述的是模块内的功能联系。耦合是软件结构中各模块之间相互连接的一种度量,耦合强弱取决于模块间接口的复杂程度、进入或访问一个模块的点以及通过接口的数据。 程序讲究的是低耦合,高内聚。就是同一个模块内的各个元素之间要高度紧密,但是各个模块之间的相互依存度却要不那么紧密。
内聚和耦合是密切相关的,同其他模块存在高耦合的模块意味着低内聚,而高内聚的模块意味着该模块同其他模块之间是低耦合。在进行软件设计时,应力争做到
高内聚,低耦合

待续。。。