随着时间的推移,JavaEE 在特性方面确实赶上了。
但是我多次偶然发现的一个因素是我长期以来一直更喜欢 Spring 的主要原因 - JavaEE 服务器和实现存在错误并且对开发人员不友好。这听起来像是在咆哮,但即使是最好的 JavaEE 6 - CDI(Weld impl)也有神秘的异常消息,并且给开发人员带来了困难(请参阅此处)。更不用说应用服务器 - 充满了非常丑陋的错误(我在使用 JBoss 5 的 3 小时内设法找到了大约 5 个错误)
让 spring 对我更有吸引力的另一件事是可以在小时间范围内添加功能。正如我在评论中提到的,统一缓存抽象和对话处理将在下一个 spring 版本中添加,这是上一个版本的几个月后。在 JavaEE 中,您必须等待很多时间(至少对于标准解决方案)
但是JavaEE并不是那么黑。许多问题都有解决方法或得到及时修复。最终,这是个人喜好的问题。
顺便说一句,与此同时,spring 的产品组合中充满了副项目,它们添加了许多特定的功能/功能集。请注意,它们中的许多也可以与 JavaEE 一起使用,但它们被设计为与 spring 完美匹配:
- spring security - 声明式安全
- spring roo - 快速引导项目的工具
- spring web flow - MVC 之上的框架,用于处理类似向导的旅程
- spring data - 仍然是新的,旨在统一对 NoSQL 存储的访问
- spring mobile - 将 spring 带入移动平台
- spring social - 一组与社交网络交互的工具
这只是额外的,JavaEE 也有额外的,但它们更通用(据我所见),除了 Seam,它专门针对提供 CDI 遗漏的东西。
要结束的一个非常重要的说明。将 spring 与 JavaEE 进行比较是不正确的。我更愿意将 Spring 与 CDI+EJB+Application 服务器进行比较。JavaEE 的其余部分可以与 spring 一起使用,而且通常是这样。JAX-WS、JAXB,甚至 JSF 都非常适合 spring 并且经常被使用。