文章图片
文章图片
【酷睿处理器|Spring Boot 还是最先进的java框架吗】
文章图片
在本文中 , 我们来探讨一下 Spring Boot 应用程序框架是否仍是最先进的java框架
在下文中 , 我想仔细探讨一下Spring Boot在基于 Java 的应用程序开发中相关问题 。 我将对它的架构概念进行批判性讨论 , 并将其与Jakarta EE(原JavaEE)框架进行比较 。 我知道这个问题非常具有挑衅性 , 会引起很多同行的不理解 。 在比较这两个框架中 , 更关注于运行时环境的问题 。
Spring Boot 和 Jakarta EE 都是用于开发微服务精心设计的概念 。 当我们谈论 Jakarta EE 和微服务时 , 总是谈论Eclipse Microprofile , 它是当今 Jakarta EE 的标准扩展 。 Spring Boot 和 Jakarta EE 的概念非常相似 。 是因为 Jakarta EE 很多技术都受到了 Spring 和 Spring Boot 的启发 。 “约定优于配置”、CDI或注解的密集使用等概念最早是由 Spring 提出来的 。 这证明了 Spring 和 Spring Boot 的创新能力 。
API 与实现如果您在Jakarta EE上实现微服务 , 那么您是针对 API 而不是具体的实现来实现的 。 当您查看 Maven 项目的 pom.xml 时 , 这一方面变得显而易见 。
关键依赖项标记为“ provided” 。 这意味着您希望实现是您的运行时的一部分 , 而不是与您的组件捆绑在一起 。 因此 , 您的组件比Spring Boot组件小得多 。 要运行您的应用程序 , 您需要将其部署到Jakarta EE运行时环境中 。
另一方面 , Spring Boot构建了一个包含所有必要库的可引导组件 , 并为您提供了可引导服务器 。 不需要额外的运行时或应用程序服务器 。 这使得Spring Boot对开发人员如此有吸引力 , 并且是Spring Boot成功的最重要概念 。 但是这个概念是在 7 年多以前引入的 。
那个时候安装应用服务器很痛苦——尤其是对开发人员来说 。 使用 Spring Boot , 开发人员只需几个简单的步骤即可设置简单微服务的运行版本 。
容器环境今天我们已经确立了容器环境的概念 。 每个开发人员都可以使用一个简单的 Docker 命令启动任何类型的服务器或运行时环境 。 在容器环境中启动像Payara、Wildfly或OpenLiberty这样的现代应用程序服务器只需几秒钟 , 而部署微服务只需几秒钟 。 例如 , 要将您的微服务与最新的 Wildfly Docker 映像捆绑在一起 , Dockerfile 如下所示:
要启动您的服务 , 您只需运行:
这平衡了Spring Boot的初始优势 。 除了Jakarta EE组件要小得多这一事实外 , 您还可以在几秒钟内将微服务部署到不同的环境中 。 这为您的运行环境提供了更大的灵活性 。 但这不是唯一的优势 。
摆脱依赖使用Jakarta EE更有趣的方面是您没有对某些库的硬编码依赖 。 再次查看Spring Boot项目的 pom.xml , 您会发现很多依赖项与您的项目捆绑在一起 。
JPA 实现了 Jax-RS 实现等所有库都将成为您最终构建的一部分 。 相比之下 , 在Jakarta EE项目中 , 您不知道目标运行时将使用哪个 JPA 或 Jax-RS 实现 。 这意味着您的应用程序也更具互操作性 。 当开发人员开始使用具体实现的某些特性时 , 这一点变得更加明显 。
Spring Boot 开发人员经常使用诸如 Rest API Jersey之类的 API 的特定功能来解决问题 。 但此时您的应用程序不再与其他 Jax-RS 实现兼容 , 例如Rest Easy 。 这是一个很大的威胁 。 针对 API 而不是具体实现进行开发是一种很好的做法 。
日志4j捆绑库的危险性最近在 Log4j 错误中变得清晰起来 。 一个简单而典型的 Spring Boot 依赖项 , 如下所示:
… 可能导致您的最终应用程序出现安全漏洞 。 由于 Log4j 库现在是您构建的一部分 。 要更新此依赖项 , 您需要更新代码并重建和推出Spring Boot应用程序 。
相比之下 , 在Jakarta EE中 , 您永远不会针对特定实现构建代码 , 而只会针对接口构建代码 。 这意味着您的代码以及最终的组件永远不会对特定实现有硬编码依赖 。 在具体示例中 , 您只需更改运行时环境 , 无需更新或重建代码 。 这意味着对于像 Kubernetes 这样的容器环境 , 您只需更新映像版本并重新启动容器 。
- 全面屏|春季打造12代酷睿主机要注意,机电散你知道该怎么选择吗?
- CPU|别只看跑分和处理器,买手机搞清这几点,要少花冤枉钱
- CPU|2022中端处理器选谁好?R5 5600X大战i5 12400
- spring|什么牌子的蓝牙耳机听歌好? 实惠好用蓝牙耳机品牌
- 液晶显示器|iPhoneSE三代谍照来了,LCD屏+A15处理器,价格还不到3000?
- CPU|商用本处理器选AMD还是英特尔?10项实际应用测试大比拼
- iqoo neo|iQOO“双机”降价,均搭载骁龙888处理器,到底该怎么选?
- CPU|安卓手机处理器怎么选?遵循这个原则,让你少走弯路少踩坑!
- spring|创业者须知的商界潜定律:只要我的人脉还在,白手起家就不难
- spring|我的世界:Mojang迁移又爆问题!账号被盗、购买的JAVA版mc消失?