Spring Framework 的理解以及可维护性是否得以改善的思考
Spring的特性 提供了一种管理对象的方法可以把中间层对象有效地组织起来一个完美的框架黏合剂 采用了分层结构可以增量引入到项目中 有利于面向接口编程习惯的养成 目的之一是为了写出易于测试的代码 非侵入性应用程序对Spring API的依赖可以减至最小限度 一致的数据访问介面 一个轻量级的架构解决方案
对Spring的理解 Spring致力于使用POJOs来构建应用程序由框架提供应用程序的基础设施将只含有业务逻辑的POJOs作为组件来管理从而在应用程序中形成两条相对独立发展的平行线并且在各自的抽象层面上延长了各自的生命周期
Spring的工作基础是IocIoc将创建对象的职责从应用程序代码剥离到了框架中通常中注入方式setter 和 ctor参数每个Bean定义被当作一个POJO(通过类名和JavaBean的初始属性或构造方法参数两种方式定义的Bean) Spring的核心在orgspringframeworkbeans更高抽象层面是BeanFactory BeanFactory是一个非常轻量级的容器
关于可维护性的思考 Spring之类的技术确实带来了应用系统的可维护性的提高吗? Ioc AOP之类的技术本质上都是将原本位于应用程序代码中硬编码逻辑剥离出来放到了配置文件中(或者其他形式)主流声音都是认为提高了应用程序的可维护性
但如果从以下方面观察结合项目实际经验个人感觉这些技术的应用大大降低了应用程序的可维护性尤其是面对一个陌生的系统或者项目人员变动频繁的时候 中断了应用程序的逻辑使代码变得不完整不直观此时单从Source无法完全把握应用的所有行为 将原本应该代码化的逻辑配置化增加了出错的机会以及额外的负担 时光倒退失去了IDE的支持在目前IDE功能日益强大的时代以往代码重构等让人头痛的举动越来越容易而且IDE还提供了诸多强大的辅助功能使得编程的门槛降低很多通常来说维护代码要比维护配置文件或者配置文件+代码的混合体要容易的多 调试阶段不直观后期的bug对应阶段不容易判断问题所在 性能问题虽说硬件性能日新月异但是性能也是在不经意间一点一点地流失的从汇编到高级语言到面向对象到虚拟机一直处于这样的发展趋势