java.lang.Object javax.imageio.spi.ServiceRegistry javax.imageio.spi.IIORegistry
public final class IIORegistry
用于服务提供者实例的注册表。使用包含服务提供者类的 JAR 文件中的元信息可在运行时检测服务提供者。这是一种相对划算的加载和检查所有可用的服务提供者类的方式。然后可使用这些类定位和实例化更具重量级的将执行实际工作的类,这里指 ImageReader
、ImageWriter
、ImageTranscoder
、ImageInputStream
和 ImageOutputStream
的实例。
在系统类路径(例如,Sun 的 JDK 实现中的 jre/lib/ext
目录)中找到的服务提供者在此类实例化后即自动加载。
调用 registerApplicationClasspathSpis
方法时,在应用程序类路径中的 JAR 文件的元信息部分声明的服务提供者实例将被加载。为声明服务提供者,在每个 JAR 文件都有的 META-INF
目录中加入一个 services
子目录。此目录针对每个在 JAR 文件中具有一个或多个实现类的服务提供者接口都包含一个文件。例如,假设 JAR 文件包含了一个名为 com.mycompany.imageio.MyFormatReaderSpi
的类,它实现 ImageReaderSpi
接口,则此 JAR 文件将包含一个名称如下所示的文件:
META-INF/services/javax.imageio.spi.ImageReaderSpi包含行:
com.mycompany.imageio.MyFormatReaderSpi
服务提供者类为轻量级的,可快速加载。这些接口的实现应避免复杂化其他类和本地代码的依赖关系。
还可以手动添加无法自动找到的服务提供者,也可以手动移除那些使用 ServiceRegistry
类的接口的服务提供者。因此,应用程序可根据需要自定义注册表的内容。
有关声明服务提供者和通用 JAR 格式的更详细的信息,请参见 JAR File Specification。
嵌套类摘要 |
---|
从类 javax.imageio.spi.ServiceRegistry 继承的嵌套类/接口 |
---|
ServiceRegistry.Filter |
方法摘要 | |
---|---|
static IIORegistry |
getDefaultInstance() 返回 Image I/O API 使用的默认 IIORegistry 实例。 |
void |
registerApplicationClasspathSpis() 使用默认的 ClassLoader 注册应用程序类路径中找到的所有可用的服务提供者。 |
从类 java.lang.Object 继承的方法 |
---|
clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
方法详细信息 |
---|
public static IIORegistry getDefaultInstance()
IIORegistry
实例。此实例应该用于所有注册表功能。
每个 ThreadGroup
将收到其自身的实例;这样同一个浏览器(举例)中的每个不同的 Applet
都将有其自己的注册表。
ThreadGroup
的默认注册表。
public void registerApplicationClasspathSpis()
ClassLoader
注册应用程序类路径中找到的所有可用的服务提供者。此方法通常由
ImageIO.scanForPlugins
方法调用。