Spring框架的概论
- 一、 Spring框架的起源与历史
- 二、 Spring框架的核心理念与特点
- 三、 Spring与其他框架的对比
- 1、首先介绍下Spring与其平替的EJB的对比:
- 2、接下来介绍下Spring与基于Java EE原生技术的对比
- 3、Spring与Hibernate的对比
- 4、Spring与Struts的对比
- 四、Spring框架的模块介绍
一、 Spring框架的起源与历史
最早,有个人名叫Rod Johnson,他设计了Spring框架,为何叫Spring呢?说是因为它像春天一样给人带来新的希望——我知道你会想,这也太浪漫了吧?不过我们不否认,Spring它确实带来了新的生机。
在2002年,Johnson写了一本名为《Expert One-on-One J2EE Development without EJB》的书籍,主旨是我们可以摆脱繁琐的EJB(有兴趣可以自己查资料)开发,选择更简洁、更易用的方式进行实现。这鲜明的观点引起了巨大的反响,Spring从此开始了它的旅程。可以毫不夸张的说,Spring的出现,就是为了颠覆基于EJB厚重的java开发框架的,开创了轻量级的企业应用开发框架,为JAVA语言这么多年长盛不衰做出了最大的贡献。 Spring官网地址 https://spring.io/
二、 Spring框架的核心理念与特点
你是不是想知道,为什么大家都爱Spring?让我掀开它的神秘面纱:
- 便捷的开发:Spring的出现就是为了简化开发,它允许你只关注业务实现,其他琐碎的事情交给Spring。
- 轻量级:Spring的体积相对较小,但又包含丰富的集成选项,让你几乎可以随心所欲地将自己的程序与各种系统打交道。
- IoC容器:Spring提供了强大的IoC容器,它会按需为你管理Bean的生命周期,你唯一要做的就是选择如何用它。
- AOP支持:Spring为我们提供了AOP(面向切面编程),这样你就可以在不改动业务代码的基础上,进行诸如日志记录、事务管理等操作。
三、 Spring与其他框架的对比
1、首先介绍下Spring与其平替的EJB的对比:
EJB (Enterprise JavaBeans)是Java EE规范的一个重要部分,为开发企业级分布式系统提供了一套丰富的服务。然而,随着Spring框架的出现,EJB并不再是唯一的企业级开发解决方案。Spring和EJB有积极的竞争关系,它们各有优缺点。
- 易用性
Spring:Spring框架以简化开发为目标,它主要使用POJOs (Plain Old Java Objects) 进行开发,使得编码过程更灵活,可测试性更强。Spring提供了面向切面编程(AOP)和依赖注入(DI),使得开发者能更专注于业务逻辑而非系统级别的编程问题;
EJB:早期的EJB由于复杂的生命周期和复杂的配置,使用起来过于繁琐。但EJB 3.0及其之后的版本做了很多改进,像Spring一样支持注解和POJO。然而,EJB通常需要依赖特定的Java EE应用服务器,而Spring应用可以在任何的Servlet容器中运行。
- 性能
Spring:Spring框架为应用提供了轻量级容器,对系统资源的消耗较小,同时,Spring的IoC(控制反转)和AOP特性使得代码运行高效,并且Spring本身提供了丰富的对缓存、数据库等的处理机制,使得性能优化更方便;
EJB:EJB通常运行在Java EE应用服务器中,如WebLogic,WebSphere等,这些服务器可能会提供事务管理、安全性、并发处理等多种服务,而这可能会导致额外的系统开销。但在需要复杂的分布式事务或并发处理的系统中,EJB可能会提供更优的性能。
- 移植性
Spring:Spring是非侵入性的,意味着使用Spring框架开发的应用程序可以很方便地移植到其他技术和框架上,这大大增强了应用的移植性;
EJB:虽然EJB是Java EE规范的一部分,理论上可以在任何遵循Java EE规范的应用服务器中运行,但实际上,由于特定的启动类和运行环境,EJB在不同的应用服务器之间移植可能会遇到一些问题。
2、接下来介绍下Spring与基于Java EE原生技术的对比
- Spring框架Java EE的一种轻量级解决方案
Java EE是一个完整的企业级应用开发平台,包括许多规范和API,如JPA、EJB、JSF和JMS等。在某种程度上,Spring框架可被视为Java EE的一种轻量级替代方案。
- Spring相比Java EE轻量,灵活,门槛低
Spring的优点在于它的轻量级和灵活性。与Java EE相比,Spring的学习曲线更为平缓,Spring没有复杂的企业级特性,但通过使用DI、AOP等技术,Spring可以处理很多企业级应用的需求。此外,Spring框架的自适应性更强,可以轻松地与许多第三方库集成。
3、Spring与Hibernate的对比
Hibernate是一个开源的持久层框架,它在Java应用程序和数据库之间提供了ORM服务。Spring和Hibernate可以很好地集成在一起,Spring提供了一个称为Spring ORM的模块来支持Hibernate。
Spring的优势在于它的全面性,Spring不仅提供了持久层解决方案,而且还处理了许多其他的跨越应用层的问题,如安全性、事务管理、依赖注入等。此外,Spring的依赖注入可以简化复杂的Hibernate关联和事务管理。
4、Spring与Struts的对比
Struts是一个用于创建企业级Java Web应用程序的MVC框架。与Spring MVC相比,Struts2具有良好的分层架构和强大的标签库,但在开发效率和灵活性方面,Struts2不如Spring MVC,并且安全问题频发,使得struts2份额越来越低。
Spring为MVC开发提供了Spring MVC框架,优点在于它可以与Spring框架无缝集成,它支持灵活的URL映射和视图解析,并且Spring MVC的控制器编写起来更加简单,更符合POJO的编程范式。此外,Spring MVC的异常处理更加强大。
四、Spring框架的模块介绍
Spring框架拆分出了20多个独立的模块,看起来是不是有点头晕?其实只要你记住核心模块,其他的都可以在需要时查阅文档。
spring-core:核心工具,包含IoC与DI功能;
spring-beans:提供BeanFactory,是工厂模式的优雅实现;
spring-aop:支持AspectJ风格的面向切面编程;
spring-context:包含多个企业级服务,如邮件发送、JNDI定位、EJB集成等,还有许多与Spring核心模块的扩展;
spring-jdbc和spring-tx:简化了JDBC编程与事务管理;
spring-webmvc:提供了MVC设计模式的全功能实现,是开发Web应用的完美选择。
本节为Spring系统学习第一节,需要明白Spring的核心思想和其的独特优势就行。你也许会忽略Spring的来龙去脉,但是在此后的章节中,你将会发现这正是你对Spring的深度理解的开始。后续的章节将更深入地剖析Spring框架的内在机制,并通过实战示例的方式讲述Spring的应用和原理,让你从Spring小白成长为Spring大拿。