在了解GeoTools的过程中,遇到了这个java的技术。在这里摘出来记录以下。
FactorySPI系统java自带的插件系统。其中SPI发音为“spy”,表示:服务、提供者、接口。
FactorySPI系统会搜索你的CLASSPATH路径,找到一个需要的服务的实现,这个服务可能位于所有jar中的任意一个中。它是通过查看jar MANIFEST文件夹的一个服务文件夹来实现。
FactorySPI是一个运行时额插件系统,因此你的程序可以发现和使用任何服务。
以下是GeoTools中的一个使用FactorySPI插件系统的示例:
Hints hints = GeoTools.getDefaultHints();
FactoryRegistry registry = new FactoryCreator(Arrays.asList(new Class[] {FilterFactory.class,}));
Iterator i = registry.getServiceProviders( FilterFactory.class, null, hints );
while( i.hasNext() ){
FilterFactory factory = (FilterFactory) i.next();
}
其中的FactoryRegistry是全局唯一的单例对象,因此建议将它保存在全局服务例如JNDI或者Spirng上下文中
什么是FactorySPI
最新推荐文章于 2020-11-09 11:26:17 发布