@SuppressWarnings("unchecked")
	public static <T> SPIExtension<T> getExtensionLoader(Class<T> iFaceType) {
		if (iFaceType == null)
			throw new IllegalArgumentException("Extension type == null");
		if (!iFaceType.isInterface()) {
			throw new IllegalArgumentException("Extension type(" + iFaceType + ") is not interface!");
		}
		if (!iFaceType.isAnnotationPresent(SPI.class)) {
			throw new IllegalArgumentException("Extension type(" + iFaceType + ") is not extension, because WITHOUT @"
					+ SPI.class.getSimpleName() + " Annotation!");
		}
		SPIExtension<T> loader = (SPIExtension<T>) EXTENSION_LOADERS.get(iFaceType);
		if (loader == null) {
			EXTENSION_LOADERS.putIfAbsent(iFaceType, new SPIExtension<T>(iFaceType));
			loader = (SPIExtension<T>) EXTENSION_LOADERS.get(iFaceType);
		}
		return loader;
	}