码迷,mamicode.com
首页 > 编程语言 > 详细

Java SPI 机制实现项目框架高扩展性

时间:2020-06-19 12:05:37      阅读:44      评论:0      收藏:0      [点我收藏+]

标签:扩展性   stat   conf   system   适用于   代码   out   实现   vat   

SPI

即Service Provider Interface

适用于:调用者根据实际使用需要,启用、扩展、或者替换框架的实现策略

使用方法:

假设有三个模块service, api, core

  • 在core中定义了一个接口,代码:
public interface MyService {
    void say();
}
  • 在service模块下
// MyServiceImpl1.java
public class MyServiceImpl1 implements MyService {

    private static final String NAME = "MyServiceImpl1";

    @Override
    public void say() {
        System.out.println("hello, I‘m " + NAME);
    }
}
// MyServiceImpl2.java
public class MyServiceImpl2 implements MyService {

    private static final String NAME = "MyServiceImpl2";

    @Override
    public void say() {
        System.out.println("hello, I‘m " + NAME);
    }
}
  • api模块下,新建文件src/main/resources/META-INF/services/top.simuhunluo.MyService,文件内容
top.simuhunluo.impl.MyServiceImpl1
top.simuhunluo.impl.MyServiceImpl2

api中写一个类文件,通过spi调用所有的接口实现

public class Main {

    public static void main(String[] args) {
        ServiceLoader<MyService> services = ServiceLoader.load(MyService.class);
        for (MyService service : services) {
            service.say();
        }
    }

}

Java SPI 机制实现项目框架高扩展性

标签:扩展性   stat   conf   system   适用于   代码   out   实现   vat   

原文地址:https://www.cnblogs.com/simuhunluo/p/13161823.html

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