spi

来源:互联网 发布:java 建造模式 编辑:程序博客网 时间:2024/06/08 07:28

java中SPI机制初探

关键词

java、Provider、META-INF/service、SPI

是什么?

一种为接口寻找服务实现的机制。全称是:service provider interface。

有什么用?

将接口和实现之间的关系转移到程序之外,直接更换实现jar包,程序自动加载新的实现方案。

spi协议以javax.validation为例

  1. 接口
    在接口jar中定义接口javax.validation.spi.ValidationProvider
<dependency>        <groupId>javax.validation</groupId>        <artifactId>validation-api</artifactId>        <version>1.1.0.Final</version></dependency>

1
2. 实现
在实现jar包中一定要有META-INF/services/目录,在services下有以服务接口命名的文件,文件中写明实现类,即文件META-INF/services/javax.validation.spi.ValidationProvider中写上实现的类的全名:org.hibernate.validator.HibernateValidator。

<dependency>        <groupId>org.hibernate</groupId>        <artifactId>hibernate-validator</artifactId>        <version>5.3.4.Final</version></dependency>

2

后记

java中使用spi这种设计的还有很多,比如:

interface implements slf4j logback、log4j等 jdbc mysql、oracle等
0 0
原创粉丝点击