我读过并理解JPA、JSF、CDI只是规范。例如:
那么,如果它们只是一张纸上的规范,为什么包上写着“javax.persistence.”和“javax.faces”呢?
我认为甲骨文说:这是一篇论文,规则在哪里。如果您想要实现它,您必须使用我的包名(“javax.persistence.”、“javax.faces."),并且作为支付,您可以添加更多的功能,并且可以将您自己的包用于扩展的功能?
另外,如果我研究规范(jpa,cdi,jsf),我能使用任何框架吗?甚至,在没有他们的情况下构建我的软件?
请给我解释一下。
诚挚的问候。
发布于 2015-05-22 19:12:50
首先,Spring和Guice (也不是PicoContainer,AFAIK)都不是CDI实现。JBoss Weld是一个CDI实现。
第二。说明书不仅仅是一张纸。它也是一组接口和类,每个实现都必须正确实现或扩展,甚至包含不依赖于实现的核心功能(例如,请参见持久化 )。这些接口和类是javax包中的接口和类。它们是规范本身的一部分,实现可能不会修改它们。
实际上,标准的思想是,通过依赖规范中描述的规则,您应该能够使用实现规范的任何框架。不过,请注意,有些部分有时是未指定的,而且实现,即使没有bug,也可以做一些不同的事情。
理论上,在没有实现的情况下实现您的软件是可能的,只要您的软件的用户选择它想要的实现。但这是非常不现实的:您将让让测试您的软件,从而为您的测试选择一个实现。如果您计划支持规范的几个实现,则必须测试所有这些实现,甚至可能需要进行调整。
https://stackoverflow.com/questions/30403408
复制相似问题