`
jackmisweijie
  • 浏览: 71995 次
  • 性别: 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...

    SpringCloud视频教程全套百度网盘

    Spring Cloud 是一个基于 Spring Boot 的开发框架,旨在为微服务架构提供全面的支持,包括服务发现、配置管理、熔断、路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话状态管理等。它通过整合一...

    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框架...

    第五章 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