什么是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。