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,我们只有做到全面的使用和掌握的所有流行的框架,在做项目的时候才能知道怎么搭建架构和选择性的取舍。程序里我一直认为的是没有对与错,只有好和更好。


更多推荐

Spring框架(一)简单介绍