ServiceLoader的使用

发现ServiceLoader是个类似spring的东西,可以指定接口和实现,通过ServiceLoader去载入。
下面是我的一个例子:
Java代码ServiceLoader的使用
文章图片

  1. package com.test2;
  2. import java.util.ServiceLoader;
  3. import com.test.IHello;
  4. public class Main {
  5. public static void main(String[] args) {
  6. ServiceLoader loder=ServiceLoader.load(IHello.class);
  7. for (IHello hello : loder) {
  8. System.out.println(hello.getClass());
  9. hello.sayHello();
  10. }
  11. }
  12. }


依赖的IHello是在另外一个jar包:test.jar.在test.jar里有一个接口,两个实现,Hello1和Hello2. 通过在的META-INF下的services文件夹的com.test.IHello文件来指定实现,多个实现的时候使用换行。
如我的项目中就是
Java代码ServiceLoader的使用
文章图片
  1. com.test.Hello1
  2. com.test.Hello2


注意,这个只能是打成jar之后给其他项目用,自己是不可以用自己的。

ServiceLoader的使用
文章图片

    推荐阅读