ServiceLoader服务加载

首先定义一个接口:

package com.peter.sl;

public interface Sl {

	public void say();
}

  

将接口打包成jar文件

 

新建一个工程,SlImpl实现接口Sl

package com.peter.sl;

public class SlImpl implements Sl {

	@Override
	public void say() {
		System.out.println("this class is loaded by ServiceLoader");
	}

}

 

工程下要求有META-INF/services/文件夹,此文件夹下有文件名为com.peter.sl.Sl即接口的全名,文件内容为实现类全名com.peter.sl.SlImpl,若有多个,换行分开即可。

 

测试一下:

 

package com.peter.sl;

import java.util.ServiceLoader;

public class ServiceLoaderTes {

	public static void main(String[] args) {
	
		ServiceLoader<Sl> loader = ServiceLoader.load(Sl.class);
		for(Sl sl : loader){
			sl.say();
		}
	}
}

 

 

输出:

this class is loaded by ServiceLoader

你可能感兴趣的:(service)