Spring Framework简介
2019独角兽企业重金招聘Python工程师标准>>>
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
Spring Framework简介相关推荐
- Spring入门简介
Spring概况 Spring的简介 Spring是一个轻量级的控制反转和面向切面的容器框架,它主要是为了解决企业应用开发的复杂性而诞生的: 目的:解决企业应用开发的复杂性 功能:使用基本的javaB ...
- Spring框架简介
Spring框架简介 Spring Framework 是一个开源的Java/Java EE全功能栈(full-stack)的应用程序框架,以Apache许可证形式发布,也有.NET平台上的移植版本. ...
- SpringBoot_入门-Spring Boot简介
SpringBoot入门知识,首先我们会对Springboot和微服务,相关的概念,来做一个简介,接下来我们来编写一个SpringBoot的helloworld程序,然后通过分析helloworld, ...
- Spring Framework 官方文档学习(四)之Validation、Data Binding、Type Conversion
本篇太乱,请移步: Spring Framework 官方文档学习(四)之Validation.Data Binding.Type Conversion(一) 写了删删了写,反复几次,对自己的描述很不 ...
- 微服务与Spring Cloud简介
目录 分布式 集群 微服务简介 什么是集群 什么是分布式 集群/分布式 分布式/微服务/SOA 微服务 微服务优点及缺点 微服务技术栈 CAP原理 对CAP原理的一些常见的理解误区 分区容忍性P的例子 ...
- Spring Framework 开发参考手册中文(在线HTML)
'原文:http://blog.csdn.net/zfrong/article/details/3971722 Spring Framework 开发参考手册中文(在线HTML) Spring Fra ...
- 万字博客带你了解Spring Framework 的全貌
1.写在前面 我之前出过一个系列介绍的是spring的源码的系列,但是由于当时个人的水平有限,有些地方介绍的也是模棱两可的,打算重启这块内容,上次只是介绍其中的一部分,例如国际化,事件等等这块的源码都 ...
- Spring 官方简介【spring】
1.Spring 1.1.简介 Spring:春天----->给软件行业带来了春天! 2002,首次推出了Spring框架的雏形:interface21框架! Spring框架即以interfa ...
- 手动创建Spring项目 Spring framework
之前学习框架一直是看的视频教程,并且在都配套有项目源码,跟着视频敲代码总是很简单,现在想深入了解,自己从官网下载文件手动搭建,就遇到了很多问题记载如下. 首先熟悉一下spring的官方网站:http: ...
最新文章
- red hat 升级 php 5.6,Centos7下编译php5.6.19出错,怎么解决?
- 计算机常用端口号汇总
- Mac 配置支持 opengl 的 opencv 4.2
- 光流 | OpenCV实现简单的optical flow(代码类)
- VMware Workstation中Linux虚拟机安装VMware-Tools
- java遇见的问题分析
- cuda nvcc版本不一致_windows 验证CUDA和CUDNN是否安装成功
- php 查找无限级,Ztree + PHP 无限级节点 递归查找节点法
- ZZULIOJ:1000: 从今天开始入坑C语言
- CSS盒模型完整介绍
- 学生通讯录管理系统的设计与实现
- PHP + 小程序开发过程
- linux 命令 查询丢包率,linux测试丢包率的命令 linux查看丢包率命令
- 精约而不简单 极速迅雷只为下载而生
- 用python做一个文本翻译器,自动将中文翻译成英文,超方便的
- win进程崩溃弹出Microsoft Visual C++ Runtime Library的解决办法
- Spring的AspectJ包的下载及下载缓慢的解决方法
- 两种将pdf转换成jpg格式的简单方法
- maven 修改maven本地仓库的位置
- keil 5 报错记录:..\OBJ\templiate.axf: Error: L6218E: Undefined symbol PcdHalt (referred from rc522.o).