Spring Framework简介

Spring Framework是一个轻量级的解决方案,也是构建企业级应用的一种一站式服务。Spring是模块化的,允许您仅使用所需的部件,而无需使用其余的部件。可以单独使用IoC容器,并在其顶层使用任何web框架;也可以仅使用Hibernate集成代码或JDBC抽象层。Spring Framework支持声明式的事务管理、通过RMI或Web服务实现远程调用和各种手段的数据持久化。它提供了一个全功能的MVC框架,能够将AOP透明的继承到软件中。

Spring被设计为非侵入式的,这意味着你的逻辑代码通常不依赖于框架本身。在集成层中(例如数据访问层),存在一些对于数据访问技术和Spring库的依赖。但是很容易将这些依赖与代码的其余部分隔离开来。

Spring Framework是一个Java平台,为开发Java应用程序提供全面的基础设施支持。 Spring处理基础设施,以便您可以专注于您的应用程序。

Spring使您能够从“简单的Java对象”(POJO)构建应用程序,并将企业服务非侵入式应用于POJO。此功能适用于Java SE编程模型以及完整和部分Java EE。

作为应用程序开发人员,您可以从Spring平台中获益如何:

  • 使Java方法在数据库事务中执行,而不必处理事务API;
  • 使本地Java方法成为HTTP端点,而无需处理Servlet API;
  • 使本地Java方法成为消息处理程序,而无需处理JMS API;
  • 使本地Java方法成为管理操作,而无需处理JMX API;

依赖注入和控制反转

Java应用程序——一个广义的名字,代指从受限的嵌入式应用程序到n层服务器端企业级应用程序——一般由对象以及它们之间的协作构成。因此,应用程序中的对象彼此之间拥有依赖关系。

虽然Java平台提供了丰富的应用程序开发功能,但它缺乏将基本模块组织成整体的方法,并将该任务留给架构师和开发人员。虽然可以使用工厂方法、抽象工厂、构建器、修饰器和服务定位等设计模式来组织构成应用程序的各种类和对象,但是这些设计模式仅仅是简单给出了名称的最佳实践、可以做什么,在哪里应用、解决什么问题等等。设计模式是形式化的最佳实践,你必须在你的应用程序中自己实现。

Spring Framework的控制反转组件提供将不同组件组成完整、可用的应用程序的正式方法来解决上述问题。Spring Framework将形式化的设计模式编辑为可以集成在应用程序中的类的对象。

“问题是,什么方面的控制是反转了?” Martin Fowler在2004年在他的网站上提出了关于控制反转(IoC)的问题。Fowler建议将其重新命名,使其更加自明,并提出了依赖注入。

框架模块

Spring Framework的主要功能有大概20个模块组成。这些模块主要分为 核心容器、数据访问/集成、Web、AOP(面向切面编程)、Instrumentation、消息和测试,如下图所示。 输入图片说明

核心容器

核心容器包括spring-core, spring-beans, spring-context, spring-context-support, spring-expression模块。

spring-core和spring-beans模块提供了框架的基础部分,包括控制反转和依赖注入的功能。BeanFactory是工厂模式的复杂实现。它消除了编程单例的需要,并允许将依赖关系的规则和配置与实际的程序逻辑解耦。

Context(spring-context)模块建立在Core和Beans模块基础上:它提供一种获取对象的框架化方法,与JNDI注册相似。Context模块继承了Beans模块的功能,并增加了对国际化(使用,例如resource bundles)、事件传播、资源加载以及context的透明创建方法(例如Servlet容器创建context的方法)。Context模块还支持Java EE功能,例如EJB、JMX和basic remote。ApplicationContext接口是Context模块的焦点。spring-context-support为常见第三方库集成到Spring应用上下文提供支持,例如缓存(EhCache、Guava、JCache),邮件(JavaMail),调度(CommonJ,Quartz)和模版引擎(FreeMarker、JasperReports、Velocity)。

spring-expression模块提供了一个强大的表达式语言用于查询和维护运行时的对象图谱。它是JSP 2.1 规范中定义的 unified EL的扩展。它支持读取和设置属性值,property assignment(?),方法调用,数组、集合和索引集的方法、逻辑和算术运算符,命名变量和从Spring IoC容器中检索对象。它还支持列表的projection(?)和选择,列表的聚合。

AOP 及 Instrumentation

spring-aop模块提供AOP联盟兼容的面向切面编程的实现,允许自定义方法拦截器和切入点,以便将其与功能代码解耦。使用源码级别的元数据功能,可以将行为信息合并到代码中,这种方法类似于.NET的属性。

单独的spring-aspects模块提供与AspectJ集成的功能。

spring-instrument模块提供了类instrumentation的支持和在指定应用服务器使用的classloader的实现。spring-instrument-tomcat模块提供Spring的tomcat instrumentation代理。

(Spring in action中对于instrument的论述:提供了为JVM添加代理的功能。具体来讲,它为Tomcat提供了一个织入代理,能够为Tomcat传递类文件,就像这些文件是被类加载器加载的一样。这个模块使用场景非常有限。)

消息

Spring Framework 4 包含spring-messaging模块,提供了从Spring集成项目中抽象出的关键功能,比如Message、MessageChannel、MessageHandler和消息应用的其他基础服务。该模块还包括一系列注解,用于将消息映射到方法,与Spring MVC的编程模型的注解相似。

数据访问/集成

数据访问/集成层由 JDBC, ORM, OXM, JMS, 和 Transaction 模块组成。

spring-jdbc 模块提供一个JDBC抽象层,用于消除JDBC的冗长代码并解析数据库厂商的特定错误代码。

spring-tx 模块支持通过实现特定的接口来管理编程式和声明式的事务管理,对所有POJOs均适用。

spring-orm 模块对流行的对象-关系映射API(包括JPA、JDO和Hibernate)提供集成层。使用spring-orm模块可以使用上述的ORM框架与Spring其它特性结合使用,例如上文提到的简单声明式的事务管理功能。

spring-oxm 模块提供一个抽象层支持Object/XML映射的实现包括JAXB、Castor、XMLBeans、JiBX和XStream。

spring-jms 模块(Java Messaging Service)包括生产和消费消息的主要功能。从4.1开始,支持与spring-messaging 模块的集成。

Web

Web 层由 spring-web, spring-webmvc, spring-websocket, 和 spring-webmvc-portlet 组成 。

spring-web 模块提供了基本的面向 web 开发的集成功能,例如文件上传、使用Servlet监听器和面向对象的应用上下文初始化IoC容器。它同时包含HTTP 客户端和Spring远程访问支持的web相关部分。

spring-webmvc模块(也被称为web-servlet模块)包含了web应用中MVC和REST Web服务实现。实现了domain model代码和web 表单之间的完全分离,并且可以与框架的其它功能集成。

spring-webmvc-portlet模块(也被称为web-portlet模块)提供了Portlet环境中的MVC实现和面向Servlet的spring-webmvc模块的功能镜像。

测试

spring-test模块支持通过JUnit或TestNG来进行单元测试和集成测试。它提供了常量加载和缓冲Spring应用上下文的功能。也提供模拟对象,用于隔离测绘代码。

转载于:https://my.oschina.net/u/2453016/blog/917191

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值