JPA、CDI和JSF的框架和规范



我已经阅读并理解JPA、JSF、CDI只是规范。如:

  • JPA - [Hibernate, Toplink], JSR-000338
  • CDI - [Spring - Google Guice, PicoContainer], JSR299
  • JSF - [Primefaces, IceFaces, RichFaces], JSR-000314

那么,如果它们只是论文中的规范,为什么包上写着"javax.persistence…","javax.faces."?

我认为甲骨文说:这是这篇论文哪里是规则。如果你想实现它,你必须使用我的包名("javax.persistence…","javax.faces."),作为报酬,你可以添加更多的功能,你将可以把自己的包为扩展功能?

另一件事,如果我研究规范(jpa, cdi, jsf),我能使用任何框架吗?甚至,在没有它们的情况下构建我的软件?

请给我解释一下。

问好。

首先,Spring和Guice(当然也不是PicoContainer)都不是CDI实现。JBoss Weld是一个CDI实现。

。规范不仅仅是一份文件。它也是一组接口和类,每个实现都必须正确地实现或扩展,甚至包含不依赖于实现的核心功能(例如,请参阅持久性)。这些接口和类都在javax包中。它们是规范本身的一部分,实现不能修改它们。

标准的思想确实是通过依赖规范中描述的规则,您应该能够使用实现规范的任何框架。但是,要注意,有些部分有时没有指定,并且即使没有错误,实现也可以做一些不同的事情。

只要你的软件的用户选择它想要的实现,在理论上没有实现的情况下实现你的软件是可能的。但这是非常不现实的:您将使用来测试您的软件,从而为您的测试选择一个实现。如果您计划支持规范的几个实现,您将不得不使用所有这些实现来测试您的软件,甚至可能需要进行调整。

相关内容

  • 没有找到相关文章

最新更新