文档章节

Spring 框架的优点及缺点

苏叶晚晚
 苏叶晚晚
发布于 2013/08/15 08:52
字数 982
阅读 1K
收藏 12
首先Spring 是一个框架,使用Spring并不代表代码质量的提高,就像盖房子选择用上海的地皮还是北京的地皮一样,房子质量与土地所在的城市无关,与房子的具体设计方案和选料有关。
使用Spring 等框架可以简化很多基础性的工作,配置好后可以方便构建业务应用。

框架使用多了会有局限的感觉,像小鸟被套在笼子里,无法飞出去,虽然在笼子里面吃喝不愁。目前编程的门槛越来越低,诸多开源框架广泛传播,几乎没有什么技术门槛,会配置就会编程,而一个好的DBA对软件性能会有很大提高,软件的核心逻辑最终会转移到对数据库的操作上,而且对目前从事的工作来讲,感觉技术的瓶颈越来越多的局限在对数据库的操作上,下一步要认真提高下了。

Spring的优势不言而喻:

  1. 提供了一种管理对象的方法,可以把中间层对象有效地组织起来。一个完美的框架“黏合剂”。

  2. 采用了分层结构,可以增量引入到项目中。

  3. 有利于面向接口编程习惯的养成。

  4. 目的之一是为了写出易于测试的代码。

  5. 非侵入性,应用程序对Spring API的依赖可以减至最小限度。

  6. 一致的数据访问介面。

  6. 一个轻量级的架构解决方案。

  对Spring的理解

  Spring致力于使用POJOs来构建应用程序。由框架提供应用程序的基础设施,将只含有业务逻辑的POJOs作为组件来管理。从而在应用程序中形成两条相对独立发展的平行线,并且在各自的抽象层面上延长了各自的生命周期。

  Spring的工作基础是Ioc。Ioc将创建对象的职责从应用程序代码剥离到了框架中,通常2中注入方式:setter 和 ctor参数。

  每个Bean定义被当作一个POJO(通过类名和JavaBean的初始属性或构造方法参数两种方式定义的Bean)。

  Spring的核心在org.springframework.beans,更高抽象层面是BeanFactory. BeanFactory是一个非常轻量级的容器。

  关于可维护性的思考

  Spring之类的技术确实带来了应用系统的可维护性的提高吗?

  Ioc, AOP之类的技术,本质上都是将原本位于应用程序代码中"硬编码"逻辑,剥离出来放到了配置文件中(或者其他形式)。主流声音都是认为提高了应用程序的可维护性。

  但如果从以下方面观察,结合项目实际经验,个人感觉这些技术的应用大大降低了应用程序的可维护性,尤其是面对一个陌生的系统,或者项目人员变动频繁的时候。

  1. 中断了应用程序的逻辑,使代码变得不完整,不直观。此时单从Source无法完全把握应用的所有行为。

  2. 将原本应该代码化的逻辑配置化,增加了出错的机会以及额外的负担。

  3. 时光倒退,失去了IDE的支持。在目前IDE功能日益强大的时代,以往代码重构等让人头痛的举动越来越容易。而且IDE还提供了诸多强大的辅助功能,使得编程的门槛降低很多。通常来说,维护代码要比维护配置文件,或者配置文件+代码的混合体要容易的多。

  4. 调试阶段不直观,后期的bug对应阶段,不容易判断问题所在。 

本文转载自:http://www.zhenhua.org/article.asp?id=573

苏叶晚晚
粉丝 75
博文 76
码字总数 35972
作品 0
徐汇
程序员
私信 提问
加载中

评论(4)

苏叶晚晚
苏叶晚晚 博主

引用来自“捏造的信仰”的评论

比较合适的做法是仅将Spring用于环境配置和对象装配,不要把与业务逻辑相关的东西放到Spring配置文件中。

仅用于对象装配 不可避免也会对原本代码逻辑的可阅读性有点影响。不过我觉得这些缺陷相比于spring的优点而言,微乎其微啦!
“不要把与业务逻辑相关的东西放到Spring配置文件中。”这个没太理解。。一般用了spring,几乎所有对象的装配都交给他了。。
苏叶晚晚
苏叶晚晚 博主

引用来自“ToSun”的评论

双刃剑呀,面试经常问到这个问题

我是第一次被问道,以前就是问spring的实现机制,spring的作用,优点。。第一次被问到缺点。。一下子居然没想出来。
ToSun
ToSun
双刃剑呀,面试经常问到这个问题
捏造的信仰
捏造的信仰
比较合适的做法是仅将Spring用于环境配置和对象装配,不要把与业务逻辑相关的东西放到Spring配置文件中。
Intellij IDEA 4种配置热部署的方法

热部署可以使的修改代码后,无须重启服务器,就可以加载更改的代码。 第1种:修改服务器配置,使得IDEA窗口失去焦点时,更新类和资源 菜单Run -> EditConfiguration , 然后配置指定服务器下,...

limeOracle
2017/12/19
0
0
告诉你,Spring Boot 真是个牛逼货!

现在 Spring Boot 非常火,各种技术文章,各种付费教程,多如牛毛,可能还有些不知道 Spring Boot 的,那它到底是什么呢?有什么用?今天给大家详细介绍一下。 Spring Boot 的背景 了解 Spri...

技术小能手
2018/10/12
0
0
使用Spring MVC开发RESTful API的拦截功能

详细代码见我的github仓库 https://github.com/29DCH/springsecurity-study 欢迎star+fork RESTful API的拦截功能实现 拦截顺序图: 这里统一用请求方法耗时的例子来讲 1.过滤器(Filter) 如果...

29DCH
03/31
0
0
使用Maven构建dubbo服务可执行的jar包

1.使用Servlet 容器运行 ---不可取 缺点:增加复杂性 浪费资源 原因: tomcat 运行需要端口, 一个tomcat 跑多个服务,也需要配置端口,是一个问题, 增加管理的复杂性, 本身要多Servlet容器...

哲别0
2017/10/31
114
0
简单比较Spring和Mybatis,帮你更好地选择和使用

Spring和Mybatis是目前依然还比较流行的两大框架,比较一下两者的优缺点就会了解其中的原因,主要还是对开发者或所开发的项目提供什么便利的原因。下面简要介绍一下两者的优缺点,方便大家来...

小欣妹妹
2017/10/20
18
0

没有更多内容

加载失败,请刷新页面

加载更多

Elasticsearch:shard 分配感知

osc_lnhxmt4i
3分钟前
8
0
Elasticsearch:分布式计分

osc_rnx2cje5
5分钟前
11
0
vue-element-admin中public中json中的代码没有打包到线上

解决的办法 将public中的文件放到static中,修改对应的路径,就可以解决这个bug了

osc_8hhlaimy
8分钟前
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部