名师讲坛:Spring实战开发(Redis+SpringDataJPA+SpringMVC+SpringSecurity)
上QQ阅读APP看书,第一时间看更新

1.1 Spring的产生背景

Java是大型分布式企业项目开发的首选语言,我们所熟悉的大部分系统平台都是以Java为核心进行搭建的。经过二十多年的发展,Java语言的性能得到了不断完善,更有大量的技术公司围绕Java推出了种类繁多的开源项目,以帮助解决Java开发中存在的各类困难。

Java从产生到成为主流技术,其主要依靠的就是Java EE企业级平台开发,并且围绕着企业开发这一领域不断地制定技术标准。正因为有了这些技术标准,Java开发与设计才变得更加灵活,也才有更多的人参与到这些标准的实现技术当中。如图1-1所示为Java EE开发的标准架构。

图1-1 Java EE标准架构

通过图1-1可以发现,Java EE中采用的是MVC设计模式,要求通过EJB(Enterprise Java Bean,企业JavaBean)实现业务中心的搭建,由会话Bean(Remote Interface,远程接口)定义业务方法,由实体Bean(Local Interface,本地接口)负责数据层的实现并与SQL数据库进行JDBC操作。EJB容器的存在,可以极大地简化JDBC的重复性处理,同时可以更好地管理实例化对象,使开发者只关注于业务实现。这样的技术架构虽然设计理念领先,但一个非常现实的问题是EJB的使用成本过高。EJB最终未能得到广泛的应用。

提示:EJB未能得到广泛应用的原因。

虽然EJB技术提供了超前的设计理念,但在进行技术选型的时候,企业却不得不面对成本限制问题。

· 稳定的EJB容器(如WebSphere、WebLogic等)价格昂贵。当然,用户也可以选用免费的JBoss。

· EJB服务器硬件价格不菲,由于需要维护对象状态,所以需要极大的性能开销。

最为重要的是,随着技术的发展,EJB的不足之处也逐渐被人们认识到。虽然EJB 3.x提供的JPA标准为后续的实体层开发技术带来了一个新的方向,但遗憾的是并没有得到广泛的应用。

不管Java技术未来向何处发展,EJB这一技术理念的出现,为整个行业带来了新的领航方向。

Java EE开发标准强调的是MVC设计模式的应用以及业务层的定义。由于EJB没有普及开来,所以开发者需要在Web端手动模拟EJB技术实现方案。长久以来,Java开发的设计结构如图1-2所示。

图1-2 在Web中实现MVC设计模式

图1-2中给出了现代Java开发中常用的标准设计结构。由于取消了EJB容器,所以开发者需要通过手动代码方式实现业务层与数据层的结构,还需要利用开源的JMS消息服务组件(以ActiveMQ为代表作)实现消息组件与业务层的通信。这样的设计可以有效降低项目的运行成本,但开发者却需要面对大量的Java原生代码。为了防止不同层之间形成耦合,还需要引入工厂设计模式,进行对象获取。为了方便业务层实现事务控制,还需要引入代理设计模式,如图1-3所示。这样的开发,同样会造成成本的大幅攀高。

图1-3 MVC设计模式应用

通过图1-3可以发现,缺少了EJB容器支持之后,开发者不仅需要手动进行对象管理,还需要依据反射机制进行一系列的先期架构设计,同时还需要考虑解耦合与多线程等种种问题。如果可以有一个容器,能像EJB那样进行对象管理,帮助开发者免去软件架构设计的困难,将极大地提高开发效率。正是在这样的背景下,Spring开发框架应运而生。