Spring是一个轻量级框架,可以一站式构建你的企业级应用。
Spring作为Javaee开发技能不可或缺的一项,是每一个做Javaee开发的人必须要掌握的。现在最新的Spring已经到5.0的体验版了,不过做技术的人都知道,在一个实际的项目中最好还是使用成熟稳定的版本,所以本片文章以当前最近的稳定版本4.3.5为基础上进行的测试。
本篇文章作为我写Spring框架的第一篇,还是要介绍一下Spring是什么,能干什么。不然学习起来可能就比较“心赌”。
首先,我们先看看Spring框架都包括那些内容:
以上借用的官方网站上的一张图片,这张图片上包含的就是Spring框架中的所有模块。Spring就是由这些模块组成的。接下来,会对以上模块做一个简单的解释,这样我们就能大概弄清楚Spring能干什么了。
Spring的模块大概分为6个,分别是:
1、Core Container(Spring的核心)【重要】
2、AOP(面向切面变成)【重要】
3、Messaging(消息发送的支持)
4、Data Access/Integration(数据访问和集成)
5、Web(主要是SpringWeb内容,包括MVC)【重要】
6、Test(Spring测试支持,包含JUint等测试单元的支持)
7、Instrumentation(设备支持,比如Tomcat的支持)
一 、Core Container
这是Spring的核心,Spring的其他一切组件都是建立在此基础之上的。Core容器主要包含IOC(控制反转)的内容。
Core Container由如下jar包组成:
spring-core
, spring-beans
,spring-context
, spring-context-support
, spring-expression。
a、其中core和beans是Spring的提供IoC和DI(Dependency Injection)的主要jar包。
b、spring context是建立在core和beans基础之上的。采用JNDI技术读取bean对象,是ApplicationContext的主要支持库。功能包括读取beans.xml配置文件和缓存bean对象等。
c、spring context support是spring context的一个扩展库,用于提供第三方框架向Application Context中进行预加载和缓存。
d、spring-expression是提供spring ecpression language(表达是语言)的支持jar包,用于在Spring运行时查询和操作bean对象。
e、common-logging此包不是spring框架范围内的,但是Spring依赖此包进行日志记录,所以此包也是必不可少的。
二、AOP
AOP的全称是Aspect Orientation Programming(面向切面编程)。面向切面编程是Spring的核心技术之一,也是我们要重点掌握的技能。后面会单独写一篇文章介绍。
AOP相关的jar包如下:
spring-aop:这是AOP的核心jar包
spring-aspects:这是为了集成AspectJ所需要的jar包。AspectJ是一个动态代理的框架,具体可以Google一下。
三、Messaging
这是一个Spring 4之后才加入的模块,是一个基于消息发送的基础模块。目前还没有使用过,做了解即可。
四、Data Access/Integration
这是Spring的数据访问模块,提供对JDBC、Hibernate等数据访问的支持和集成。
比如,如果要和Hibernate组合使用,需要导入spring-orm包。如果要集成JDBC,需要导入spring-jdbc的包。
五、Web
Spring Web是Spring MVC的主要模块,提供对多文件上传、Servlet、MVC等的支持。涉及的jar文件包括如下:
spring-web和spring-webmvc等
总结:
通过以上模块,我们可以知道Spring可以做事情如下(包含但是不限制):
1、依赖注入
2、面向切面编程(动态代理)
3、数据访问
4、Web MVC架构
以上这些也是我们必须要掌握的。
最后
Spring就是由上面的多个模块组合的一个框架,可以说Spring包含的东西很多很多,Spring也在不断的自我完善,特别是近几年使用Spring MVC的公司越来越多,主要是因为Spring MVC已经开始超越Struts2了。如果你是初学者,不要因为我说Spring MVC比Struts2要优秀了,然后就开始不去了解Struts2,我们只有做到全面的使用和掌握的所有流行的框架,在做项目的时候才能知道怎么搭建架构和选择性的取舍。程序里我一直认为的是没有对与错,只有好和更好。