java SPI和API的区别?(GeoTools SPI&GeoServer中的ExtensionFilter接口)

Java SPI详解:https://www.cnblogs.com/jy107600/p/11464985.html

一般API都是接口的意思,是用于类的实现规范和约束。一旦基于该接口实现了不同的类。那么彼此类之间不一定通用。。

但是SPI接口则不同。

 参考:https://www.jianshu.com/p/46b42f7f593c  https://www.jianshu.com/p/344c00f8f550

Pluggable extension that can be used to filter out an extension point implementation before it gets returned by GeoServerExtensions#extensions(Class)

可插拔的扩展,用来过滤掉一个extension point实现,在它被GeoServerExtensions#extensions返回之前。

public interface ExtensionFilter {

/** * If any registered ExtensionFilter returns true the bean in question will be removed from the list returned by GeoServerExtensions#extensions(Class)

如果已经注册过了,就不需要重新注册,所以要从扩展列表中删除。

@param beanId The bean id as registered in the Spring context, or null if the bean is coming from the GeoTools SPI bridge

   参数beanId:如果是在Spring上下文中注册的话那么就是bean id,如果是从GeoTools SPI中来的,那么将为null。(未注册为bean之前beanid为null)

@param bean The bean itself

  参数bean:bean本身。

@return true to exclude

  返回值:如果是true代表需要从列表中删除

*/

boolean exclude(String beanId, Object bean);

}

原文地址:https://www.cnblogs.com/2008nmj/p/15816519.html