1.Service SPI 加载classpath下所有META-INF/services/目录下的对应给定接口包路径的文件
ServiceLoader<ServletContainerInitializer> serviceLoader=ServiceLoader.load(ServletContainerInitializer.class);
2.spring.handlers SPI 加载classpath下可能分散在各个jar包中的META-INF/spring.handlers文件
Properties mappings=PropertiesLoaderUtils.loadAllProperties(this.handlerMappingsLocation, this.classLoader);
3.spring.factories SPI
List<BeanInfoFactory> beanInfoFactories = SpringFactoriesLoader.loadFactories(BeanInfoFactory.class, classLoader);
4.Conditional spring 条件注解