Java如何找到规范实现?

我不明白
java如何知道任何规范的实现..

例如,我有一个带有JSF的Spring应用程序,如果我将Mojarra jar放在类路径上,应用程序可以工作,但我没有做任何事情,只是将它添加到类路径,所有没有配置

如果我取出Mojarra jar,那么我的应用程序不起作用.

甚至,它如何能够在没有任何变化的情况下区分Mojarra或MyFaces?

我只想知道Java如何找到实现,而不是为什么如果我拿出罐子它不起作用;)

最佳答案 通常Java规范类分为两部分:

> API部分(jar),主要包含通常由规范人员提供的接口.
>包含这些接口的实现的实现部分(jar).

上面的一个例子是JDBC:javax.sql.*类由sun / oracle提供,但实现是在每个db供应商提供的JDBC驱动程序中完成的.在这种情况下,需要某种配置才能将API“映射”到其实现,因为您只使用API​​类.

你的JSF示例有点不同,Mojarra和MyFaces都包含来自javax.faces.*包的API类,基本上有不同的类具有相同的名称.因此不需要配置,这两个类在两个库中都具有相同的名称,并且只要需要从类路径中的Mojarra或MyFaces jar中加载类加载器.

点赞