`
byduke
  • 浏览: 31983 次
  • 来自: ...
文章分类
社区版块
存档分类
最新评论

究竟为什么我们要用Spring

阅读更多
    Spring做为一个优秀的框架被很多人推崇,当然,在这些人中并不是全部,或者可以说是其中的相当一部分并不是真正了解Sping的优点,只是大家认为它好,就说它好。那么究竟Sping到底好在哪呢?说它可以和很多框架无缝的连接在一起,感觉很通用,这确实是它的优点。不过对于struts和hibernate来说,我不使用spring也是一样可以完成整合,而且它们之间也不会产生什么矛盾,那么为什么我非要弄出来一个什么SSH三个框架整合到一起去呢?这个问题也有好多人提出过。那也就是对于为什么要使用Spring产生了疑问。

    首先我们要先明确一点,由于加入了很多的Support,比如说JdbcDaoSupport等,Spring对于项目的代码编写来说简单很多,但是由于项目中的dao和service都要交给spring的bean容器管理,有时候可能action也交有bean容器管理,那么对于spring的配置文件来说,编写就显得过于复杂,需要很多的bean。虽然JAVA编码减少了,但是大部分的时间程序员都在和复杂的配置文件做斗争。由此可见,项目中加入spring并不是向一些人说的提升了开发效率,所以把提升开发效率作为spring的优势来说有些勉强。
   
    那么为什么我们还要提倡使用spring呢?我认为spring由bean容器管理带来的优势和一些动态代理的实现对于我们项目系统框架的搭建起着非常重要的作用,Spring的AOP更是独放异彩。

    比如说我们把action交给spring管理,那么我们就可以在bean容器中改变action的单例非线程安全的模式,可以把它变成一个原形(非单例)模式。比如我们需要对action进行一下访问记录,在action我们设置一个私有属性,保存一些信息,每个用户进入action后都对这个私有属性进行一下设置,比较加入一些用户独有的特殊标志。但是由于action本身就是单例模式,这样就造成了所有用户操作的都是同样一个action,对同一个属性进行操作,而且action本身就是非线程安全的,那么很有可能张三的属性在没有具体操作之前就被李四改掉了。这样就非常危险了,那么如果通过spring的bean容器管理以后就可以刨除这个缺陷,它可以通过spring的bean容器的特性来设定其scope范围由默认的singleton变成prototype模式,这样就可以对每次访问都产生一个新的action来处理,避免了这样的错误产生。对于这样的表现层框架,我们可以不通过改变其原代码就能控制它的生命周期来讲是非常激动人心的。而且spring提供了很多的动态代理类可以让我们去实现诸如声明式事物控制,action管理,AOP等强大功能。对于AOP来说,我们可以不用去手写一个动态代理类就可以实现横切逻辑的准确织入,可以随意去把我们的代码拆分开;甚至可以想象一下,我们的项目都可以拆分成一个小块一个小块的,然后依靠横切逻辑随意织入,当然,对于项目本身而言,它内部的逻辑大多数情况下是不可拆分的。不过对于系统性能监测或者是事物这些东西来说,本身就是可重复定义在多个业务逻辑上面的,所以他们使用Sping AOP操作起来就非常的舒服。而且spring2.0加人了很多的AOP增强,可以通过tx/aop命名空间进行声明式事物控制,甚至通过对元数据的支持可以更加简单的实现事物管理,还可以通过引介增加来动态控制一些事物的进展情况,比如人为控制系统性能检测日志的开启和关闭。所以Spring在系统框架集成方面作出的贡献是不可替代的。

    最后说一下Spring是非常优秀的框架,如果你只把它看成是提升开发效率的工具,那么你大可以不必使用它,因为它本身对开发效率来讲并没有提升很多,往往因为它的加入范围复杂了开发流程,service,dao中的实现类和接口必须分开,因为Rod 本人比较推崇面向接口编程。使用它是在写诗,是在完成一项伟大的杰作,可以说spring是java所有框架中最优秀的一个。它让我们认识到了java这个广大领域中那些深层次的知识,它让我们的思想更加成熟,对于项目框架的控制更加灵活。
分享到:
评论
4 楼 jersey109 2011-10-11  
楼主这样的解释并不充分,希望能看到的为什么要使用spring的文章.
3 楼 redcoatjk 2009-04-08  
呵呵. 深入浅出的一般都是宗师极人物了
2 楼 wysshy 2008-10-05  
我是个spring的初学者,对于这样的解释还是一头雾水,能不能有一个通俗易懂的解释横空出世呢????
1 楼 wysshy 2008-10-05  
我来坐个沙发吧,哈哈

相关推荐

    Spring(一)为什么要使用spring

    首先,我们需要理解为什么我们需要Spring。在传统的Java EE开发中,对象之间的依赖关系通常是硬编码的,即一个类直接创建另一个类的实例。这种做法导致了几个问题: 1. **紧耦合**:当一个类依赖于另一个类的具体...

    Spring Integration + Spring WS 整合

    这个 gateway 允许我们将 Web 服务和 Spring Integration 集成在一起,使得我们可以使用 Spring Integration 来调用 Web 服务。 在这个 demo 中,我们使用了 Spring Integration 的 ws-outbound-gateway 来调用 ...

    Spring Boot整合Spring Batch,实现批处理

    例如,我们可以使用JDBCItemReader来读取数据库中的数据,自定义ItemProcessor进行业务逻辑处理,然后用JdbcPagingItemWriter将结果写回数据库。 5. **启动作业**:在Spring Boot的主类或者配置类中,使用`...

    spring v3.2源码

    spring3.2的源代码,至于为什么要下载spring3.2的源代码呢? 个人觉得spring3.2的源代码比较好编译,没啥脾气,像我之前下载的spring的最新版本源代码,还有spring4.0的源代码,不论是使用jdk1.6还是1.7甚至是1.8编译...

    我们为什么要使用SpringCloud?

    在详细的了解SpringCloud中所使用的各个组件之前,我们先了解下微服务框架的前世今生。在网站开发的前期,项目面临的流量相对较少,单一应用可以实现我们所需要的功能,从而减少开发、部署和维护的难度。这种用于...

    SpringBatch+Spring+Mybatis+MySql (spring batch 使用jar)

    Spring Batch以POJO和大家熟知的Spring框架为基础,使开发者更容易的访问和利用企业级服务。Spring Batch可以提供大量的,可重复的数据处理功能,包括日志记录/跟踪,事务管理,作业处理统计工作重新启动、跳过,和...

    我们为什么采用Spring技术栈?.

    我们为什么采用Spring技术栈?

    SpringTest_springtest_spring_java_Framework_

    "SpringTest_springtest_spring_java_Framework_"这个标题暗示了我们讨论的是关于Spring框架的测试方面,可能是使用Spring进行单元测试或集成测试的一些实践。 描述中的“简单小应用,实现了一些基本的功能”可能是...

    Spring Cloud Gateway 整合 Spring Security 统一登录认证鉴权

    而Spring Security 则是 Java 开发中广泛使用的安全框架,用于实现认证和授权。当我们将这两者结合时,我们可以创建一个强大的统一登录认证鉴权系统。 首先,让我们深入了解Spring Cloud Gateway。这是一个基于...

    IDEA中使用Spring的简单入门(加小案例)

    在本文中,我们将深入探讨如何在IntelliJ IDEA(IDEA)中使用Spring框架进行简单的入门。Spring是一个广泛使用的开源Java框架,它为构建企业级应用程序提供了强大的支持,包括依赖注入、面向切面编程(AOP)、事务...

    spring配置 spring配置 spring配置 spring配置 spring配置

    spring配置 spring配置 spring配置 spring配置 spring配置

    spring2.0升级到spring3.0.5的开发包

    7. **AspectJ集成加强**:Spring 3.0进一步强化了与AspectJ的集成,使得AOP的使用更加简便,可以通过注解轻松定义切面。 8. **国际化支持**:Spring 3.0的MessageSource接口提供了更好的国际化支持,可以更方便地...

    spring-cloud项目

    在IT行业中,Spring Cloud是一个非常重要的框架,它构建于Spring Boot之上,为开发分布式系统(如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话、集群状态)...

    spring揭秘.rar_Spring揭秘 下载_spring mvc_spring 揭秘_spring揭秘

    spring揭秘,了解spring内在运行逻辑

    spring-5.3.9-dist.zip(spring-framework-5.3.9)

    在学习和使用Spring时,这些文档将帮助我们理解如何配置、编程以及管理Spring应用程序。 `libs`文件夹包含了必要的库文件,即jar包,这些是运行Spring应用所需的各种依赖。Spring框架由多个模块组成,如Core ...

    idea spring assistant插件

    Spring Assistant是专门为IntelliJ IDEA设计的一款插件,专为Spring框架的开发人员提供额外的支持和便利。这款插件旨在简化Spring项目的配置和开发流程,帮助开发者更高效地处理Spring相关的代码。 首先,Spring ...

    Spring in Action 使用Maven 构建Spring 工程

    在Maven构建的工程中,我们可以使用XML配置文件(通常命名为`beans.xml`)来定义bean及其依赖关系,或者使用Java配置类,这使得配置更加灵活且易于测试。Spring容器会根据配置自动实例化bean,并负责它们的生命周期...

    spring类库 spring类库

    Spring框架是Java开发中不可或缺的一部分,它以其模块化、松耦合和强大的功能特性而闻名。这个"spring类库"包含的资源可以...通过这些文件,开发者可以快速地在项目中引入和使用Spring框架,进行高效、稳定的开发工作。

    spring_in_action-sixth-edition.pdf

    要初始化 Spring 应用程序,需要使用 Spring Tool Suite 初始化 Spring 项目,然后检查 Spring 项目结构。Spring 项目结构主要包括配置文件、Java 类文件和资源文件等。 3. 编写 Spring 应用程序 编写 Spring 应用...

Global site tag (gtag.js) - Google Analytics