serviceloader如何处理多实例
发布网友
发布时间:2022-06-07 16:09
我来回答
共1个回答
热心网友
时间:2023-10-20 18:18
通过静态方法load获取对应服务接口的ServiceLoader实例。ServiceLoader就是 Java平台提供的一个简单的 Service Provder Framework。
在服务接口的实现模块中,创建一个实现类实现对应的服务接口,并通过在项目的resource/META-INF/services文件夹下面创建一个对应该服务接口全限定名的文本文件,在该文本文件写入该服务接口实现类的全限定名,以此达到一个注册服务的作用(项目打包后在jar文件里也得存在该文件)。
业务模块中直接通过ServiceLoader类及PaymentService接口获取服务实例并实现业务逻辑(业务模块一般是不包含服务的实现模块的)。
通过 ServiceLoader的load方法,传入PaymentService接口类,会返回一个ServiceLoader的实例对象,通过该对象的iterator()方法会返回一个 Iterator 的迭代器,可以通过这个迭代器得到所有PaymentService的实现对象。