`
jackmisweijie
  • 浏览: 72436 次
  • 性别: Icon_minigender_1
  • 来自: 河南
社区版块
存档分类
最新评论

第一章 Spring的简单剖析

 
阅读更多
大家好我准备把自己在工作经验中有关spring,hibernate,ajax,compass,acegi,lucene等写成一本书,希望对大家有点帮助。写的不好,敬请大家谅解。如有不明白的地方可以联系我的QQ:306951501.邮箱:jackmisweijie@126.com.
  注:希望大家看后,请给我一点评价,无论写的怎么样,希望你们能给我支持。提出你宝贵的意见。我会继续完善。谢谢您。朋友。        
 第一章 Spring的简单剖析
     简单的说Spring是什么呢?如果单从字面上理解它,可以解释为: 春天, 跃起, 弹性。中国有句名言:一年四季在于春。在字面可以想象它给人的意义很重要。
     在我们当今流行的技术领域中,它又是什么呢?首先让我们了解一下它产生的背景和来源。
1Rod Johnson 的《Expert One-on-One J2EE Design and Development
1Spring的起源
Spring起源于Rod Johnson的《Expert One-on-One J2EE Design and Development》,此书已经由电子工业出版社出版,译版名为《J2EE设计开发编程指南》。同时一个新的Java Framework 发布,同样出自Rod Johnson 的手笔--这就是SpringFramework
2Spring框架的产生
SpringFramework 实际上是Expert One-on-One J2EE Design and Development 一书中所阐述的设计思想的具体实现。在One-on-One 一书中,RodJohnson 倡导J2EE 实用主义的设计思想,并随书提供了一个初步的开发框架实现(interface21 开发包)。
SpringFramework 正是这一思想的更全面和具体的体现。
3Spring框架的设计者---- Rod Johnson
Rod Johnson interface21 开发包的基础之上,进行了进一步的改造和扩充,使其发展为一个更加开放、清晰、全面、高效的开发框架。
如今 SpringFramework是最流行的轻量级Java IoC容器。Rod本人也是Servlet2.4JDO2.0专家委员会成员,他同时也是一位经验丰富的技术咨询专家。Rod开了一家咨询公司,提供 SpringFramework的技术支持和培训。

4Spring框架属于应用层的框架
它关注的领域是其他许多流行的Framework未曾关注的,Spring要提供的是一种管理你的业务对象的方法。
它的设计从一开始就是要帮助你编写易于测试的代码。Spring是使用测试驱动开发的工程的理想框架。
2、为什么要提供Spring框架
Spring的目标是实现一个全方位的整合框架,在Spring框架下实现多个子框架的组合,这些子框架之间彼此可以独立,也可以使用其它的框架方案加以替代----Spring框架在设计上可以独立构建应用或者结合已有的框架一起构建应用。Spring希望提供one-stop shop的框架整合方案 。
1)面向系统设计者:为解决一些关于 J2EE 的真实世界问题而设计的
比如J2EE平台的复杂性、低性能和可测试性低等等,任何Java系统开发都能从Spring的简单、可测试和松耦合特征中受益。
2)面向应用实现者
提供Spring的主要目的是使J2EE易用和促进良好的编程习惯,而Spring的目标就是让已有的技术更加易用。
3、传统的J2EE系统在应用中所面临的问题
1J2EE技术的发展回顾
J2EE技术平台的标准化的特性大大地提升了企业级软件的开放程度,并且得到了整个行业和开发者的广泛认可。然而,J2EE在一些应用方面开始出现捉襟见肘-----低效、复杂以及依赖容器等导致应用系统的开发的成本比较高。
2J2EE技术平台的主要问题
l  由于多层结构导致代码复杂,系统编码复杂,容易混乱,无法控制。
l  可选择范围太多导致学习成本比较高,无法使初学者快速上手。
l  目前J2EE标准技术只注重中大型系统,小型系统市场被忽视,可伸缩的小中型系统不容易开发。
合理并正确地应用J2EE技术平台来开发并不是件轻松的事情,因为我们有很多东西需要仔细考虑!
l  比如在多层架构的系统中我们需要考虑怎样建立用户接口?
l  在哪里处理业务逻辑?怎样持久化数据?
l  安全问题如何实现?
l  再比如在各个层中应该使用什么技术?
l  怎样的设计既能松散耦合还能灵活改变?
l  怎样替换某个层而不影响整体构架?
l  应用程序如何做各个方面的处理(例如,事务处理)等。
3拒绝使用EJB并不意味着拒绝J2EE平台中一些良好的思想和解决方案
J2EE遭遇失败的场景中,EJB通常都扮演着重要的角色。因此,J2EE社群不断地向着
l  更简单的解决方案
l  更少地使用EJB
l  向轻量级平台等方向发展。
但我们所要明确的是,拒绝使用EJB并不意味着拒绝J2EE平台中一些良好的解决方案------比如,对象的生命周期管理、容器提供基础服务(分离应用组件和基础服务组件的思想)等。
因为,每个企业应用系统都需要这些基础服务。问题是,我们如何利用现有的框架来提供这些基础服务呢,伴随着这个问题的提出,一个轻量级的J2EE解决方案出现了,这就是Spring框架
 
4、利用Spring IoCAOP实现J2EE平台中的EJB的主要技术
Spring是一个轻量级的控制反转技术(IoC)和面向切面编程(AOP)技术的容器框架。
1)利用Spring IoC实现J2EE平台中所倡导的由容器实现对象的生命周期管理
Spring IoC,借助于依赖注入设计模式,使得开发者不用理会对象自身的生命周期及其关系,而且能够改善开发者对J2EE模式的使用;
2)利用Spring AOP实现J2EE平台中所倡导的分离应用逻辑组件和通用服务组件
Spring AOP,借助于Spring实现的拦截器,开发者能够实现以声明的方式使用企业级服务,比如安全性服务、事务服务等。
3Spring IoC Spring AOP组合在一起形成了Spring
这样一个有机整体,使得构建轻量级的J2EE平台的企业级的系统架构成为可能,而且事实证明,非常有效。没有Spring IoCSpring AOP是不完善的,没有Spring AOPSpring IoC是不健壮的。
 
5、使用Spring的主要的优点----“解耦”和“脱离容器”
1Spring框架的核心思想我们可以用两个字来描述,那就是“解耦”
l  应用程序的各个部分之间(包括应用内部的代码之间和应用程序与平台之间)尽量形成一种松耦合的结构,使得应用程序有更多的灵活性。
l  应用程序与底层应用服务器平台的解耦。
2)在Spring中是如何实现上面的两种形式的解耦
l  应用内部的代码之间的解耦主要通过一种称为控制反转(IOC)的技术来实现。
l  应用程序与底层应用服务器平台的解耦借助AOP技术来实现,Spring内置的AOP支持使得一些本来必须由容器支持的功能,比如事务控制可以脱离开容器运行。
3)使用Spring的主要的优点具体体现如下:
l  利用延时注入思想组装代码,提高系统扩展性,灵活性,实现插件式编程。
l  利用AOP思想,集中处理业务逻辑,减少重复代码,构建优雅的解决方案。
l  利用其对HibernateSessionFactory、事务管理的封装,更简洁的应用Hibernate
4)如果我们不用Spring将额外需要写很多代码!
同时,Spring提供的功能相比效果又怎样?比如事务处理、JDBC数据库访问等实现。
6、同样具有与Spring DI相同功能的其它框架
世界上有很多开源项目,因此当我们发现Spring并非唯一的提供依赖注入功能,或者全功能的端对端应用程序构建方案的框架。实际上,总是有太多的项目需要关注。
本着开放的精神,我们简短地介绍其中的几个,但是我们相信其中没有一个能提供Spring中那么丰富的解决方案。
1PicoContainer
PicoContainer ([url]www.picocontainer.org[/url])是一个特别小(50K)的DI容器,允许我们在除了PicoContainer本身外,不添加任何其他依赖的情况下就使用DI。因为PicoContainer就是单纯的DI容器,我们会发现随着我们的应用增大,我们你需要引入另外一个框架,比如Spring,那么如果一开始就用Spring岂不是更好。
但是,假若我们需要的是一个微型的DI容器,PicoContainer是一个好选择,但因为SpringDI容器包和框架中的其他部分是分离的,我们也可以很容易地只使用这一部分,这样为日后的灵活性留下了余地。
2NanoContainer
NanoContainer[url]www.nanocontainer.org[/url])PicoContainer的扩张,用于管理独立的PicoContinaer树。因为Spring提供了所有的标准DI容器具有的相同的功能,NanoContainer对比Spring占不到大的便宜。NanoContainer因为它对脚本语言的支持,它可以和容器交互,这很有趣。
但是在不久的将来,在Spring中也可以看到这个功能。
3Keel Framework
Keel Framework ([url]www.keelframework.org[/url])更像是一个元框架,它的大多数功能都是从其他框架借用的,容纳于一个屋檐下。比如,DI功能从Apache Avalon容器中来,web功能从Struts或类似框架中获得。
Keel对同一个元件有很多实现,把它们胶合成同一个系统,允许我们在对应用程序改动最小的情况下替换元件。尽管其功能集很丰富,Keel看上去没能获得Spring那么高的接受度。我们只是简要地研究了Keel,我们觉得这种情况是因为操作难度的问题造成的。Spring对各个层面的开发者都立即可用,但Keel显得更加复杂。虽然这么说,它的功能集令人印象深刻,依然是Spring的直接竞争者。
 

分享到:
评论

相关推荐

    第一章 SpringCloud概要.pdf

    5. SpringCloud Sleuth:日志收集工具,集成 Dapper、Zipkin 和 HTrace,实现分布式追踪,便于分析服务间的调用关系。 6. SpringCloud Security:提供安全工具包,支持 OAuth2 认证,增强微服务的安全性。 7. ...

    第二章 Spring MVC 增改查实例

    **第二章 Spring MVC 增改查实例** Spring MVC 是 Spring 框架的一个模块,专为构建基于 Web 的应用程序而设计。它提供了一个灵活的架构,用于处理 HTTP 请求、模型视图之间的交互以及与后端数据库的数据操作。在本...

    Java进阶教程数据层全栈方案SpringData高级应用视频教程

    第一章 SpringData概述 1.持久层开发的问题 2.SpringData简介 第二章 JPA回顾 1.JPA基础 2.JPA实战 3.JPA的重要API介绍 第三章 SpringData JPA基础 1.SpringData JPA简介 2.SpringData JPA快速入门 3.SpringData Jpa...

    spring入门经典源码第二章

    9. **实战演练**:通常,第二章会包含一些基础的实战例子,比如创建第一个Spring项目,配置Bean,使用AOP,或者搭建一个简单的Spring MVC Web应用,以帮助读者巩固理论知识并实践操作。 通过深入学习这一章的内容,...

    第七章 Spring4 继承、依赖、引用

    在Spring中,我们可以将一个Bean引用另一个Bean,这种引用被称为bean引用。有三种类型的bean引用: - **byName引用**:通过Bean的名称来引用,使用`@Resource(name="beanName")`或`<ref local="beanName"/>`。 - ...

    Spring源码深度解析第二版

    第1章 Spring整体架构和环境搭建 1.1 Spring的整体架构 Spring框架的整体架构主要包括了核心容器、AOP、Web模块、DAO模块、ORM模块和测试模块等六个主要部分。其中,核心容器是Spring框架的核心部分,负责管理Bean...

    Pro Spring for Integeration

    - **第一章:企业应用集成基础** —— 介绍了企业级应用集成的基本概念和发展历程。 - **第二章:探索替代方案** —— 分析了Spring Integration与其他集成技术相比的优势及适用场景。 - **第三章:Spring框架核心...

    Spring+3.x企业应用开发实战光盘源码(全)

     第2章:通过一个简单的例子展现开发Spring Web应用的整体过程,通过这个实例,读者可以快速跨入Spring Web应用的世界。  第3章:讲解Spring IoC容器的知识,通过具体的实例详细地讲解IoC概念。同时,对Spring框架...

    基于SpringCloud的第三章第一章节设计源码分析

    本项目为基于SpringCloud框架的第三章第一章节设计源码,包含58个文件,涵盖Java源代码、XML配置、Git忽略规则、JAR包、属性配置、命令脚本、YAML配置、日志文件和Markdown文档等多种类型,旨在深入分析SpringCloud...

    第五章 Spring4 自动装配、方法注入

    标题中的“第五章 Spring4 自动装配、方法注入”指的是Spring框架中两个核心特性:自动装配(Autowired)和方法注入。这两个概念在Spring框架中占据了重要地位,它们极大地简化了依赖管理,使得开发者能够更加专注于...

    Spring揭秘-配套源码Part23(第23章)

    这一章的内容可能包括以下关键知识点: 1. **Spring MVC概述**:解释Spring MVC的基本架构,包括DispatcherServlet、HandlerMapping、Controller、ViewResolver等核心组件及其作用。 2. **配置Spring MVC**:讲解...

    第五章 Spring MVC 文件上传

    Spring MVC 是一个强大的Java Web开发框架,用于构建可维护、高性能和灵活的Web应用程序。在Spring MVC中,文件上传功能是常见的需求,特别是在处理用户上传图片、文档等数据时。本章将深入探讨如何在Spring MVC中...

    JavaEE开发的颠覆者+Spring+Boot实战前三章源码

    2. **创建第一个Spring Boot应用**:这通常涉及到创建`main`方法,使用`SpringApplication.run`启动应用。 3. **Hello World示例**:通过编写一个简单的Controller,返回"Hello World",理解Spring MVC的工作原理。...

    第二章 Spring MVC入门 源代码下载

    Spring MVC 是一个基于 Java 的轻量级 Web 开发框架,它是 Spring 框架的重要组成部分,主要用于构建 MVC(Model-View-Controller)架构的 Web 应用程序。本章将介绍如何入门 Spring MVC,通过提供的源代码下载,你...

    spring in action中文版完整版

    第一章通常会讲解Spring框架的历史背景和设计理念,以及它如何解决Java企业级开发中的问题。第二章深入探讨了Spring的核心——IoC(Inversion of Control)容器,包括Bean的定义、依赖注入以及Bean的生命周期管理。...

    springSecurity3中文文档

    第一章:一个不安全应用的剖析 第二章:springsecurity起步 第三章:增强用户体验 第四章:凭证安全存储 第五章:精确的访问控制 第六章:高级配置和扩展 第七章:访问控制列表(ACL) 第八章:对OpenID开放 第九章...

    springlive-第二章代码

    标题“springlive-第二章代码”表明这是一份与Spring框架相关的编程项目代码,可能是某个教程或书籍的第二章节内容。Spring是Java开发中最广泛使用的轻量级框架,用于简化企业级应用的开发。这个项目的重点可能在于...

    Pro Spring 3(带目录版)

    第21章:详细解析了本书第3章中介绍的示例应用程序,通过这个案例分析加深了读者对Spring应用开发的理解。 第22章:讨论了Spring框架对脚本语言的支持,展示了如何在Spring中使用Groovy等动态语言进行应用程序开发...

    spring in action 十章

    《Spring in Action》是一本深度剖析Spring框架的权威著作,其中文版分为PDF和CHM两种格式,前五章为PDF,后五章为CHM。这本书深入浅出地介绍了Spring框架的核心概念和技术,对于想要深入理解并掌握Spring的开发者来...

Global site tag (gtag.js) - Google Analytics