Listeners used to bind to a Repository and provide monitoring of that Repository for implementations of a particular Service Provider Interface (SPI). The untyped SpiRegistry class is created with an interface name (i.e. 'org.my.interface') and scans then monitors the Repository, exposing a list of Class objects corresponding to implementations of that named interface. The strongly typed InstanceRegistry can then be used as a listener on top of the SpiRegistry and will track any changes to the list of available Class objects, creating a single instance of each one and notifying any interested parties that this list has changed.

This package also provides two filtering mechanisms which may be inserted into the SpiRegistry - these allow the list of Artifacts in the Repository to be filtered prior to scanning for SPI implementations, the Profile filter is driven off an XML document specifying a list of Artifacts and the LatestVersionFilter, as the name suggests, removes all but the latest version of any given GroupID / ArtifactID pair.