Java EE、Spring以及SpringBoot的优缺点

662 阅读3分钟

Java EE 的缺点

  • 过于复杂: Java EE 针对的是复杂的分布式企业应用,然而现实情况是大部分应用都比 较简单,复杂的架构带来了复杂的开发方式和部署方式(早期的 Java EE 普通系统打包部署数十分钟)
  • 追求分布式:大部分应用并非都是Java EE假定的分布式系统,像EJB、JMS、JWS等技术实现门槛又高又容易出错。Spring曾经反对过这种分布式架构,并只提供了容器管理,因此获得了巨大成功,大型应用采用分布式架构不可避免,Spring提供了其他的技术,比如支持RESTFul架构。
  • 不能及时与流行开源技术结合:比如消息处理,除了有标准的 JMS支持,现在还有性能更好的RabbitMQ和Kafka。Java EE并没有与之相应的标准,反而是Spring,具有统一的实现消息处理模式,无论用的是JMS、RabbitMQ,还是性能更好的Kafka,都能快速上手。
  • Java EE应用服务器通常由商业公司提供,价格不菲,少有公司采用。

Spring的产生

Spring是为了解决应用复杂性而产生的框架,它吸取了Java EE容器管理的优点,提供了一个IoC容器来管理Bcan,并通过AOP方式来增强Bean的功能,不同的是它并没像Java EE那样详细规定容器提供的是何种服务和容器里运行的具体组件类型。Spring只提供了两种机制,控制反转(IoC)和面向切面(AOP),来提供任意的服务和增强Bean的任意特性,使得Spring本身容易掌握,又可以通过Bean管理来无限扩展功能。

Spring的缺点

  • 使用门槛升高,要入门Spring需要较长时间。
  • 对过时技术兼容,导致使用复杂度升高。
  • XML配置已经不是流行的系统配置方式。
  • 集成第三方工具时候,程序员还要考虑工具之间的兼容性。
  • 系统启动慢,不具备热部署功能,完全依赖虚拟机或者Wb服务器的热部署。

SpringBoot的产生

Spring Boot简化了Spring应用开发,不需要配置就能运行Spring应用,Spring Boot管理Spring容器、第三方插件,并提供很多默认系统级的服务。大部分Spring应用,无论是简单的Web系统,还是构建复杂系统,都只需要少量配置和代码就能完成。这有点像每个公司基于Spring框架做的内部开发框架,不同的是,Spring Boot更完善、更强大。

SpringBoot的优点

相比于Spring,Spring Boot具有以下优点:

  • 实现约定大于配置,是一个低配置的应用系统框架。不像Spring那样“地狱般的配置体验”,Spring Boot不需要配置或者极少配置,就能使用Spring大量的功能。
  • 提供了内置的Tomcat或者Jety容器。
  • 通过依赖的jar包管理、自动装配技术,容易支持与其他技术体系、工具集成。
  • 支持热加载,开发体验好。也支持Spring Boot系统监控,方便了解系统运行状况。