发现ServiceLoader是个类似spring的东西,可以指定接口和实现,通过ServiceLoader去载入。
下面是我的一个例子:
Java代码
文章图片
- package com.test2;
- import java.util.ServiceLoader;
- import com.test.IHello;
- public class Main {
- public static void main(String[] args) {
- ServiceLoader
loder=ServiceLoader.load(IHello.class); - for (IHello hello : loder) {
- System.out.println(hello.getClass());
- hello.sayHello();
- }
- }
- }
依赖的IHello是在另外一个jar包:test.jar.在test.jar里有一个接口,两个实现,Hello1和Hello2. 通过在的META-INF下的services文件夹的com.test.IHello文件来指定实现,多个实现的时候使用换行。
如我的项目中就是
Java代码
文章图片
- com.test.Hello1
- com.test.Hello2
注意,这个只能是打成jar之后给其他项目用,自己是不可以用自己的。
文章图片