主页
手机版
扫描查看手机站
所在位置:首页 → 教程资讯 → Java SPI和Spring SPI的区别

Java SPI和Spring SPI的区别

发布: 更新时间:2024-10-31 09:51:46

Java SPI(Service Provider Interface)是一种动态加载扩展点的实现。它通过声明一个接口,然后通过配置获取其实现,实现动态扩展。在底层框架中大量使用,包括JDBC、Dubbo、Spring、Solon、slf4j等框架。

相比于JDK原生的SPI,Spring SPI功能更强大,可以替换的类型不仅局限于接口/抽象类,还可以是任何一个类、接口或注解。在Spring Boot中的自动装配中有体现,通过EnableAutoConfiguration注解实现。

Spring SPI的配置文件需要放在工程的META-INF下,文件名为spring.factories,文件内容本质是一个properties。例如,spring-boot-autoconfigure包下的META-INF/spring.factories文件用于自动装配。

相对于Java SPI和Spring SPI的“配置式”风格,Solon SPI采用“编码式”风格。Solon SPI,也称为Solon Plugin SPI,同样需要一个配置文件来声明Plugin的实现类。约定插件配置文件的文件名是唯一的,建议使用包名作为文件名,便于识别且可避免冲突。

插件代码示例(相当于为整个“模块”提供了一个生命周期)。因为是“编码式”的,所以也可以做更复杂的控制处理。例如,注册缓存工厂、添加事务控制支持、添加缓存控制支持、自动构建数据源等。

文章排行
软件上新 查看更多