目录
01 Spring编程思想
Pt1 Spring设计初衷
我基本算是从Struts2时代开始软件开发的,虽然周围接触的还有很多Struts1时代遗留的产物,但是Struts2 + Hibernate已经成为了主流的搭配,后来没过多久Spring开始流行,MVC大行其道,SSH组合成为风靡一时的Java开发框架。那时候要在SSH框架中集成各种组件,都要自己进行装配,也没有JdbcTemplate,每个项目要自己写很多模板代码,更不用说用Servlet开发的年代了。
程序员不只要考虑业务代码的实现,还需要考虑大量通用技术问题,框架的融合,组件的引入和管理等。不像现如今的开发,集成框架提供大量通用问题的解决方案,程序员只需要关注业务的实现。而对各种组件、通用问题的解决中,Spring无疑是佼佼者。
在传统应用程序开发中,一个完整的应用是由—组相互协作的对象组成。所以开发一个应用除了要开发业务逻辑之外,最多的是关注如何使这些对象协作来完成所需功能,而且要低耦合、高内聚。
业务逻辑开发是不可避免的,那如果有个框架能帮我们创建对象及管理这些对象之间的依赖关系,就能释放大量的开发劳动力。可能有人说了,诸如"抽象工厂、工厂方法模式" 不也可以帮我们创建对象," 生成器模式" 帮我们处理对象间的依赖关系,不也能完成这些功能吗?可是这些又需要我们创建另一些工厂类、生成器类,我们又要而外管理这些类,同样增加了开发的负担,如果能有种通过配置方式来创建对象,管理对象之间依赖关系,我们不需要通过工厂和生成器来创建及管理对象之间的依赖关系,这样可以减少许多开发工作,加速了开发效能,节省出很多时间来处理业务逻辑。
Spring框架的设计初衷就是要完成这个目标的。
Spring除了能帮助我们管理对象及其依赖关系,还提供像通用日志记录、性能统计、安全控制、异常处理等面向切面的能力,还能管理最头疼的数据库事务。它本身提供了一套简单的JDBC访问实现,提供与第三方数据访问框架集成(如 Hibernate. JPA),与各种Java EE技术整合(如 Java Mail、任 务调度等等),提供一套自己的Web层框架Spring MVC、而且还能非常简单的与第三方Web框架集成。从这里我们可以认为Spring是一个超级粘合大平台,除了自己提供功能外,还提供粘合其他技术和框架的能力,从而使我们可以更自由的选择到底使用什么技术进行开发。而且不管是JAVASE ( C/S 架构)应用程序还是JAVA EE ( B/S架构)应用程序都可以使用这个平台进行开发。如今的Spring已经不再是一个框架,早已成为了一种生态。Spring