javax.imageio.spi

接口
java.lang.Object
  继承者 javax.imageio.spi.ServiceRegistry
      继承者 javax.imageio.spi.IIORegistry

public final class IIORegistry
     
extends ServiceRegistry

用于服务提供者实例的注册表。使用包含服务提供者类的 JAR 文件中的元信息可在运行时检测服务提供者。这是一种相对划算的加载和检查所有可用的服务提供者类的方式。然后可使用这些类定位和实例化更具重量级的将执行实际工作的类,这里指 ImageReaderImageWriterImageTranscoderImageInputStreamImageOutputStream 的实例。

在系统类路径(例如,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 注册应用程序类路径中找到的所有可用的服务提供者。
 
从类 javax.imageio.spi.ServiceRegistry 继承的方法
contains, deregisterAll, deregisterAll, deregisterServiceProvider, deregisterServiceProvider, finalize, getCategories, getServiceProviderByClass, getServiceProviders, getServiceProviders, lookupProviders, lookupProviders, registerServiceProvider, registerServiceProvider, registerServiceProviders, setOrdering, unsetOrdering
 
从类 java.lang.Object 继承的方法
clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

方法详细信息

getDefaultInstance

public static IIORegistry getDefaultInstance()
返回 Image I/O API 使用的默认 IIORegistry 实例。此实例应该用于所有注册表功能。

每个 ThreadGroup 将收到其自身的实例;这样同一个浏览器(举例)中的每个不同的 Applet 都将有其自己的注册表。

返回:
当前 ThreadGroup 的默认注册表。

registerApplicationClasspathSpis

public void registerApplicationClasspathSpis()
使用默认的 ClassLoader 注册应用程序类路径中找到的所有可用的服务提供者。此方法通常由 ImageIO.scanForPlugins 方法调用。

另请参见:
ImageIO.scanForPlugins(), ClassLoader.getResources(java.lang.String)