一、Spring框架概览
Spring框架是一种轻量级、一站式解决企业级应用的解决方案。不仅如此,Spring的模块化的特点,可以使你只引用所需要的部分,而无需引用全部。你可以使用控制反转容器(IoC container)、Hibernate集成代码、JDBC抽象层。Spring支持事务管理声明、RMI或Web Service实现远程调用。它能够全部支持MVC框架的全部特性,且能显示集成AOP到代码中。
Spring的设计是非侵入式的(non-intrusive),即领域(domain)逻辑代码通常不依赖于框架本身。现在,已经有数据访问技术和Spring的库出现,来支持集成层(数据访问层),并且容易使用。
1.开始使用Spring
这一系列会包含Spring框架的全部特性的详细信息。如果想快速了解Spring,可以访问https://spring.io/guides 。
2.Spring框架介绍
Spring是一种java平台,其提供了丰富的基础组件(infrastructure),来支持java应用的开发。Spring提供了组件,可以让你更关注于应用本身。
2.1依赖注入(Dependency Injection)和控制反转(Inversion of Control)
先介绍一个小背景:Martin Fowler曾在2004他的个人网站提出了关于控制反转IoC的一个问题:反转的是控件的什么方面?他建议将此修改成一个更好的不言而喻的名字,即后来提出的依赖注入。
虽然java平台提供了丰富的函数来支持应用开发,但缺少能够将这些基本构件打包成整体的方式。当然,可以使用Factory,,Abstract Factory,,Builder, Decorator,and Service Locator来组成不同的类和对象,但这些模式是非常简单定式的(指定名字、描述及何处使用等),并且还需要开发者自己去实现。
Spring框架的IoC解决了这一问题,它提供了将不同的组件集成到应用中的一种方法。许多机构和组织都使用Spring框架构件强壮的、持久的应用。
2.2模块(Modules)
Spring框架大约由20种模块组成,被分成以下几大类:核心容器(Core Container)、数据访问集成(Data Access/Integration)、Web、面向切面编程(Aspect Oriented Programming)、工具(Instrumentation)、消息和测试。如下图所示:
下面将会详细介绍每个组件:
核心容器:
包含了spring-core, spring-beans, spring-context, and springexpression(Spring Expression Language)模块。
spring-core 和 spring-beans提供了Spring的基础功能,包含控制反转和依赖注入。BeanFactory是工厂模式的复杂实现,可以将依赖的配置和声明从程序逻辑中分离开来。
spring-context建立在core和beans的基础上,是类似JNDI的一种访问对象的方式。spring-context模块继承了beans模块的特性,并且增加了国际化(例如使用资源包)、事件传播(event propagation)、资源加载、上下文的透明创建(transparent
creation of contexts)。Context也支持JAVA EE的特性,例如EJB、JMX和基础的远程调用。ApplicationContext是context模块的重点。
spring-expression为查询和操作对象提供了丰富的表达式语言(Expression Language)。它是统一表达式语言(unified expression language)的扩展。这种语言支持属性值的get和set,属性赋值,方法调用,命名变量和检索对象。
面向切面编程(AOP)和工具(Instrumentation):
spring-aop提供了面向切面的实现方法,允许定义方法拦截器和切入点。spring-aspects模块集成了AspectJ。
spring-instrument提供了类工具的支持和应用服务器的类装载器的实现。
消息:
Spring 4包含Message,MessageChannel,MessageHandler等。
数据访问集成(Data Access/Integration):
包含JDBC,ORM,OXM,JMS和事务模块。
spring-jdbc提供了JDBC数据库抽象层,减少了冗余的JDBC代码的编写,也不用解析各数据库厂商的错误规范。
Web:
包含spring-web,,spring-webmvc,,spring-websocket,springwebmvc-Portlet模块。
spring-web模块提供了基本的面向web集成的特性,例如多文件上传功能、IoC容器的实例化。也包含了Spring远程支持中web相关的部分。
spring-webmvc模块(即Web-Servlet模块)包含了MVC的实现,使得web和领域模块分离。
spring-webmvc-portlet模块(即Web-Portlet模块)提供了在Portlet中的MVC实现。
Test:
支持Spring框架的单元测试和集成测试。
【未完待续】
参考资料:《Spring Framework Reference Documentation 4.1.1.RELEASE》