文档章节

一览Spring全貌

白志华
 白志华
发布于 2015/10/18 10:55
字数 1314
阅读 12
收藏 0

       Spring是一个Java 开源框架,是轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。

    • 轻量——从大小与开销两方面而言Spring都是轻量的。完整的Spring框架可以在一个大小只有1MB多的JAR文件里发布。并且Spring所需的处理开销也是微不足道的。此外,Spring是非侵入式的:典型地Spring应用中的对象不依赖于Spring的特定类。
    • 控制反转——Spring通过一种称作控制反转(IoC)的技术促进了松耦合。当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。你可以认为IoC与JNDI相反——不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。
    • 面向切面——Spring提供了面向切面编程(AOP)的丰富支持,允许通过分离应用的业务逻辑与系统级服务(例如审计(auditing)和事务(transaction)管理)进行内聚性的开发。应用对象只实现它们应该做的——完成业务逻辑——仅此而已。它们并不负责(甚至是意识)其它的系统级关注点,例如日志或事务支持。
    • 容器——Spring包含并管理应用对象的配置和生命周期,在这个意义上它是一种容器,你可以配置你的每个bean如何被创建——基于一个可配置原型(prototype),你的bean可以创建一个单独的实例或者每次需要时都生成一个新的实例——以及它们是如何相互关联的。然而,Spring不应该被混同于传统的重量级的EJB容器,它们经常是庞大与笨重的,难以使用。
    • 框架——Spring可以将简单的组件配置、组合成为复杂的应用。在Spring中,应用对象被声明式地组合,典型地是在一个XML文件里。Spring也提供了很多基础功能(事务管理、持久化框架集成等等),将应用逻辑的开发留给了你。

       Spring的框架结构

    • Spring Core——核心容器,核心容器提供 Spring 框架的基本功能。其主要组件是 BeanFactory,它是工厂模式的实现。BeanFactory 使用控制反转 (IOC) 模式将应用程序的配置和依赖性规范与实际的应用程序代码分开。可以说BeanFactory 提供了组件生命周期的管理,组件的创建,装配,销毁等功能。

    • Spring Context——ApplicationContext,扩展核心容器,提供事件处理、国际化等功能。它提供了一些企业级服务的功能,提供了JNDI,EJB,RMI的支持。

    • Spring AOP——通过配置管理特性,Spring AOP 模块直接将面向切片的编程功能集成到了 Spring 框架中。所以,可以很容易地使 Spring 框架管理的任何对象支持 AOP。Spring AOP 模块为基于 Spring 的应用程序中的对象提供了事务管理服务。通过使用 Spring AOP,不用依赖 EJB 组件,就可以将声明性事务管理集成到应用程序中。

    • Spring DAO——JDBC DAO 抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库供应商抛出的错误消息。异常层次结构简化了错误处理,并且极大地降低了需要编写的异常代码数量(例如打开和关闭连接)。Spring DAO 的面向 JDBC 的异常遵从通用的 DAO 异常层次结构。同时还提供了对事务支持。

    • Spring ORM——Spring 框架对流行的O/R Mapping封装或支持,从而提供了 ORM 的对象关系工具,其中包括 JDO、Hibernate 和 iBatis SQL Map。所有这些都遵从 Spring 的通用事务和 DAO 异常层次结构。

    • Spring Web——提供Web应用上下文,对Web开发提供功能上的支持,如请求,表单,异常等。Web 上下文模块建立在应用程序上下文模块之上,为基于 Web 的应用程序提供了上下文。所以,Spring 框架支持与 Jakarta Struts 的集成。Web 模块还简化了处理多部分请求以及将请求参数绑定到域对象的工作。

    • Spring Web MVC——MVC 框架是一个全功能的构建 Web 应用程序的 MVC 实现,作用等同于Struts。通过策略接口,MVC 框架变成为高度可配置的,MVC 容纳了大量视图技术,其中包括 JSP、Velocity、Tiles、iText 和 POI。

       Spring 框架的功能可以用在任何 J2EE 服务器中,大多数功能也适用于不受管理的环境。Spring 的核心要点是:支持不绑定到特定 J2EE 服务的可重用业务和数据访问对象。毫无疑问,这样的对象可以在不同 J2EE 环境 (Web 或 EJB)、独立应用程序、测试环境之间重用。


版权声明:本文为博主原创文章,未经博主允许不得转载。

本文转载自:http://blog.csdn.net/xiaoxian8023/article/details/17029093

共有 人打赏支持
白志华
粉丝 31
博文 265
码字总数 57524
作品 0
长沙
程序员
私信 提问
请教spring源码的阅读方法

oschina上不贬大牛,想请教一下,spring源码的阅读方法。 在没有考虑,一头栽进去的时候,发现,阅读起来有些困难。 我是先从ContextListener开始逐步阅读的。感觉,spring拥有众多接口,用i...

大东哥
2010/06/03
4.3K
6
IntelliJ IDEA 2018.2.1 发布,错误修复和诸多性能提升

如果你还没有把你的 IntelliJ IDEA 更新到 v2018.2(已于几周前推出),现在不用再等了。JetBrains 刚刚发布了 IntelliJ IDEA 2018.2.1,这一全新的升级带来了重要的错误修正,并在许多方面提...

局长
2018/08/08
4.2K
42
android ImageButton显示本地图片

得到本地图片(png,jpeg,gif)的路径后,将图片显示在ImageButton上。这里先读出图片大小,在设置采样率,使得大图片也能一览全貌。 参考:android Bitmap学习总结 void foo(){String filepa...

walk273
2013/05/12
0
0
ybg-spring-fast 1.7.5,基于 springboot 模块化开发

ybg-spring-fast 1.7.5发布了。以SpringBoot 为中心,模块化开发系统,用户可以随意删减除权限框架外任意的系统模块。复用,组装性强。主要应用技术: spring Security+Ehcache+quartz+swagg...

Deament
2018/01/27
1K
3
ybg-spring-fast 1.5.3,基于springboot 模块化开发

ybg-spring-fast 1.5.3 发布了。以SpringBoot 为中心,模块化开发系统,用户可以随意删减除权限框架外 任意的系统模块。复用,组装性强主要应用技术:spring Security+Ehcache+quartz+swagge...

Deament
2017/10/14
637
0

没有更多内容

加载失败,请刷新页面

加载更多

day22:

1、写一个getinterface.sh 脚本可以接受选项[i,I],完成下面任务: 1)使用格式:getinterface.sh [-i interface | -I ip] 2)当用户使用-i选项时,显示指定网卡的IP地址;当用户使用-I选项...

芬野de博客
28分钟前
1
0
Spring Cloud Alibaba基础教程:使用Nacos实现服务注册与发现

自Spring Cloud Alibaba发布第一个Release以来,就备受国内开发者的高度关注。虽然Spring Cloud Alibaba还没能纳入Spring Cloud的主版本管理中,但是凭借阿里中间件团队的背景,还是得到不少...

程序猿DD
32分钟前
2
0
Java并发编程:深入剖析ThreadLocal

ThreadLocal 的理解 ThreadLocal,很多地方叫线程本地变量,或线程本地存储。ThreadLocal为变量在每个线程中都创建了一个副本,每个线程可以访问自己内部的副本变量。===》解决的问题是线程间...

细节探索者
39分钟前
1
0
【Python3之异常处理】

一、错误和异常 1.错误 代码运行前的语法或者逻辑错误 语法错误(这种错误,根本过不了python解释器的语法检测,必须在程序执行前就改正) def test: ^SyntaxError: invalid...

dragon_tech
今天
2
0
编写可维护的 JavaScript

几乎每个程序员都有接手维护别人遗留项目的经历。或者,有可能一个老项目某一天又被重新启动。 通常情况下,接手老项目都会让人恨不得抛弃掉整个代码库从头开始。老代码凌乱、文档缺失、需要...

前端小攻略
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部