码迷,mamicode.com
首页 > 其他好文 > 详细

SPI

时间:2018-11-15 22:38:54      阅读:133      评论:0      收藏:0      [点我收藏+]

标签:好处   int   没有   存在   class   actor   code   ace   换行符   

SPI全称Service Provider Interface,即服务提供接口

java中:

 ServiceLoader<RedisClient> serviceLoader = ServiceLoader.load(RedisClient.class);
    for(RedisClient redisClient: serviceLoader){
        System.out.println(redisClient);
    }

这样编码的前提是在resources下,存在目录文件META-INF/service/com.xxxx.Interface
文件内容则为实现这个接口的类,可以使用换行符一次配置多个服务实现

com.xxx.JedisClientA
com.xxx.JedisClientB

这样做的好处是根据依赖自动装配实例,达到类似于自动注册的功能

java SPI是有一些缺点的:

  • 如果同时依赖了多个实现包,则会将全部实现都初始化

因此,诸如spring MVC,spring boot,都实现了自己的SPI,而没有直接使用java SPI

spring在META-INF/spring.factories文件中定义了自动装配的类,Spring会读取这些文件,取出其中的接口及实现进行初始化

org.springframework.beans.BeanInfoFactory=org.springframework.beans.ExtendedBeanInfoFactory

SPI

标签:好处   int   没有   存在   class   actor   code   ace   换行符   

原文地址:https://www.cnblogs.com/windliu/p/9966084.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!