美文网首页java复习
2020-08-03模块服务的使用

2020-08-03模块服务的使用

作者: 智障猿 | 来源:发表于2020-08-13 09:00 被阅读0次

说明

Java9允许将服务接口定义在一个模块中,并使用uses语句来声明该服务接口,然后针对该服务接口提供不同的服务实现类,这些服务实现类可以分布在不同的模块中,服务实现模块则使用provides语句为服务接口指定实现类

使用方法

  • 在模块module1下创建一个包com,在该包下提供一个接口,接口中定义一个抽象方法。


    结构.png
  • 在com包下创建一个包impl,在该包下提供接口的两个实现类Student和Teacher

  • 在module1这个模块下的描述性文件中添加如下配置
    模块导出:exports 包名
    服务提供:**provides 接口名 with 类名(为接口指定实现类)

import com.MyService;
import com.Student;
module module1 {
    exports com;
    provides MyService with Student;//指定MyService的实现类是Student
}
  • 在模块module2这个模块下的描述性文件中添加如下配置
    声明服务接口:uses MyService;
  • 在module2这个模块的类中使用MyService接口提供的服务
    ServiceLoader:一种加载服务实现工具
import com.MyService;

import java.util.ServiceLoader;

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

相关文章

网友评论

    本文标题:2020-08-03模块服务的使用

    本文链接:https://www.haomeiwen.com/subject/vowbrktx.html