Spring是一个轻量级的DI和AOP容器框架。说它轻量级有一大部分原因是相对于EJB的(虽然本人从来没有接触过EJB的应用),但重要的是Spring是非侵入式的,基于Spring开发应用一般不依赖于Spring的类。

Spring中的一些概念

DI(Dependency Injection,依赖注入)

依赖注入是控制反转的具体实现。当一个角色需要另外一个角色协助的时候,在传统的程序设计中,通常由调用者来创建被调用者的实例,但是在Spring中创建被调用者将不再由调用者完成,而是交给容器去统一创建,这就是控制反转。创建被调用对象由Spring来完成,在容器实例化对象的时候主动地将被调用者(或者说它的依赖对象)注入给调用对象,这就是依赖注入。

AOP(Aspect Oriented Programming,面向切面编程)

Spring对面向切面编程提供了强有力的支持,通过它让我们将业务逻辑从应用服务(如事务管理)中分离出来,实现了高内聚开发,应用对象只关注业务逻辑,不再负责其他系统问题,比如日志、事务或权限等。另外Spring还支持用户自定义切面。

面向切面编程是面向对象编程的一个有力补充。面向对象编程将程序分成各个层次的对象,面向切面的程序将运行过程分解成各个切面。AOP是从运行程序的角度去考虑程序的结构,提取业务处理过程的切面,OOP是静态的抽象,AOP则是动态的抽象,是对应用执行过程的步骤进行抽象,从而获得步骤之间的逻辑划分。

容器

Spring是个容器,因为它包含并且管理应用对象的生命周期和配置。比如对象的创建、销毁和回调等。

框架

Spring作为一个框架,提供了一些基础功能,比如事务管理或持久层集成等,使开发人员更专注于开发应用逻辑。

Spring的优点

1.使用Spring的IOC容器,将对象之间的依赖关系交给了Spring,降低了组件之间的耦合性,让我们更专注于应用逻辑。

2.Spring提供众多服务,比如事务管理,WS等。

3.Spring对AOP很好的支持,方便面向切面编程。

4.Spring对追u的框架提供了很好的集成支持,比如Hibernate、Struts2和JPA等。

5.Spring的DI机制降低了业务对象替换的复杂性。

6.Spring属于低侵入,代码的污染极低。

7.Spring的高度可开放性,并不强制依赖于Spring,开发者可以自由选择Spring的部分或全部。

"不要在悲观的情绪里沉溺太久,也不要在崩溃的边缘停留太久。"

最新文章

  1. AfxBeginThread中使用updatedata出错
  2. 运动规划 (Motion Planning): MoveIt! 与 OMPL
  3. Django-简单项目创建
  4. [转]java 输出流转输入流
  5. Mac 使用SSH远程登录
  6. Sql语句里的递归查询
  7. 搭建SpringMVC+MyBatis开发框架三
  8. Windows环境下tomcat配置日志输出
  9. Fragment实现不支持左右滑动的Tab
  10. BZOJ 1835: [ZJOI2010]base 基站选址(DP,线段树)
  11. 201521123098 《Java程序设计》第2周学习总结
  12. HTML表单设计(上)
  13. KVM_虚拟化技术
  14. Java根据链接生成二维码
  15. 【lua】lua安装学习
  16. [学习笔记]prufer序列
  17. 32-Python3 MySQL(mysql-connector)
  18. kivy中文
  19. iOSApp上下有黑边
  20. 超全面的JavaWeb笔记day22<文件上传>

热门文章

  1. win10启动telnet
  2. 如何在Mac上配置iTerm2以及给ITerm2配置lrzsz
  3. make 命令与 Makefile
  4. springMVC校验器(validator)
  5. 多线程学习三:Thread API,ThreadLocal,synchronized,volatile和Condition
  6. CSS3常用新特性
  7. v8js-在PHP中运行javascript代码
  8. 【亲测有效】Ubuntu18.04 sudo apt update无法解析域名的解决方案
  9. pyecharts和echarts的混合使用
  10. hadoop mapreduce求解有序TopN