前言
之前跟着书籍学习过一遍spring,但是也仅仅只限于了解,对于很多知识点还是不够了解,紧接着就开始参加工作,成为一名光荣的实习程序熊,整天忙着和业务逻辑打架,对于之前所学的逐渐开始淡忘,所以决定再系统的学习一遍Spring,巩固一下自己的知识。
鉴于我还是一名实习熊,所以阐述的都是自己的个人理解,肯定会有不准确,甚至错误的地方,欢迎大家指正。
spring是什么?
在谈论这个问题之前,应该先讨论另一个问题,
什么是框架?
为什么要用框架?
什么是框架?
在百度百科上对
框架是这么解释的:
框架是一个基本概念上的
结构,用于去解决或处理复杂的问题,有一种定义认为框架是可被开发应用者定制使用的应用骨架。
根据上面的解释,我理解为:
框架是针对某一类问题的处理工具,她在项目中的作用是针对这一类问题,提供一种通用的解决办法,她负责建立处理该类问题的应用流程,但是不负责处理具体的业务逻辑。
同样,我在网上看到过这么一句话:
IT语境中的框架,特指为解决一个开放性问题而设计的具有一定约束性的支撑结构。在此结构上可以根据具体问题扩展、安插更多的组成部分,从而更迅速和方便地构建完整的解决问题的方案。
————补充解释————
也就是说:
1)框架本身一般不完整到可以解决特定问题;
2)框架天生就是为扩展而设计的;
3)框架里面可以为后续扩展的组件提供很多辅助性、支撑性的方便易用的实用工具(utilities),也就是说框架时常配套了一些帮助解决某类问题的库(libraries)或工具(tools)。
4)约束性:针对解决特定问题的软件框架会首先定义问题的边界,进而将相关的软件组件约束在这个边界内,保持框架在解决问题方面上的内聚性。
为什么要用框架?
1.
在很多讲框架的书籍上我都阅读过类似的一段话:
企业应用软件越来越大,软件技术也越来越复杂,因此,开发人员常常忙于对技术的研发和应用,却忽略了对业务本身复杂逻辑的分析,为了减少开发人员在软件技术上的时间,把精力放于对业务逻辑的理解上,市场上出现了很多解决这一问题的框架。
2.
框架在开发中,还有一点特别重要的作用:
框架的约定,在开发中,有许多细节和功能取决于开发过程中的约定,例如项目的模块的划分,MVC的分层,以及propertis/xml文件的存放等,我在最开始的时候对于这些是不在意的,从而导致一个后果:写完代码过一个月再看,就算注释在清晰,看着也头疼。
相对来说,框架中的约定,包含的一些思想,比如MVC等,在真正用到项目中时,能够使项目结构更清晰。
讨论完这两个问题,就可以开始我们的第一个正题了:
什么是Spring?
首先,spring是一个开源的框架,她的主要特点如下:
通过配置文件来完成对象之间的依赖注入,她提倡面向接口编程。
2.spring提供了声明式事务管理。
3.spring提供了简单有效的JDBC应用。
4.spring提供了强大的MVC框架——springMVC
这里只是阐述一下spring的一些功能,接下来开始进入正题,开始我的Spring学习之旅。
我是用的spring版本为4.3.6版。该项目由20个jar文件构成。
将这些功能模块按照功能划分大约为六个模块。
![](https://i-blog.csdnimg.cn/blog_migrate/1675e4ae796b11993d9d10ad2eeddbd2.png)
1、core container:主要提供基础支持
core模块是整个框架的基础核心工具类,其他所有的模块都要依赖core模块。
beans模块同样是其他模块所依赖的,这个模块提供了配置文件的访问,以及bean管理和IOC操作。
context模块依赖core和bean,对bean进行了大量的扩展。
其中还有context-support模块,该模块集成了第三方类库,扩展了context模块.
其中还有context-support模块,该模块集成了第三方类库,扩展了context模块.
expression模块:EL表达式,操纵数据。
2、数据操作模块
jdbc:提供了访问jdbc数据的方法.
ORM:提供了对ORM框架的支持.
OXM:提供了Object/XML映射的支持.
JMS:提供对JMS的支持.
还应该包含messaging模块,提供了消息发送的基础支持.
3.Web模块,该模块提供了对web的支持.
web:提供了对web功能的基础支持,比如文件上传等.
webmvc:包含了springmvc和rest Web service的实现.
websocket:提供了websocket方式的通讯支持.
jdbc:提供了访问jdbc数据的方法.
ORM:提供了对ORM框架的支持.
OXM:提供了Object/XML映射的支持.
JMS:提供对JMS的支持.
还应该包含messaging模块,提供了消息发送的基础支持.
3.Web模块,该模块提供了对web的支持.
web:提供了对web功能的基础支持,比如文件上传等.
webmvc:包含了springmvc和rest Web service的实现.
websocket:提供了websocket方式的通讯支持.
webmvc-protlet:提供了对protlet的支持.
4.面向切面模块(AOP)和设备
aop:提供了面向切面的基础支持.比如,允许开发者定义方法拦截器和切入点,以此来将业务逻辑和系统服务进行解耦。
Aspects:提供了对AspectJ的集成.
instrument模块提供了在普通应用服务器中使用到的类设备支持和加载器实现。
instrument-tomcat模块包含了Spring的Tomcat设备代理。
5.test测试模块
test:提供了对junit和testNG的单元测试和集成测试.
到此,算是对spring的基本构成有了一定的了解,在了解spring的构成之后,我们才可以继续探讨下一个问题:
为什么使用spring?
4.面向切面模块(AOP)和设备
aop:提供了面向切面的基础支持.比如,允许开发者定义方法拦截器和切入点,以此来将业务逻辑和系统服务进行解耦。
Aspects:提供了对AspectJ的集成.
instrument模块提供了在普通应用服务器中使用到的类设备支持和加载器实现。
instrument-tomcat模块包含了Spring的Tomcat设备代理。
5.test测试模块
test:提供了对junit和testNG的单元测试和集成测试.
到此,算是对spring的基本构成有了一定的了解,在了解spring的构成之后,我们才可以继续探讨下一个问题:
为什么使用spring?