代码目录
代码实现
-
接口定义
TestService
package com.service; public interface TestService { String test(); }
-
接口实现
TestServiceImpl
package com.service.impl; import com.service.TestService; public class TestServiceImpl implements TestService { @Override public String test() { return "test"; } }
OtherServiceImpl
package com.service.impl; import com.service.TestService; public class OtherServiceImpl implements TestService { @Override public String test() { return "other"; } }
-
配置文件
com.service.TestServicecom.service.impl.TestServiceImpl
com.service.impl.OtherServiceImpl -
测试类
MyTest
package com; import com.service.TestService; import org.junit.Test; import java.util.ServiceLoader; public class MyTest { @Test public void test() { ServiceLoader<TestService> services = ServiceLoader.load(TestService.class); services.forEach(testService -> System.out.println(testService.test())); } }
-
运行结果
-
要点
(1)类路径下需要创建目录:META-INF/services
(2)META-INF/services创建文件com.service.TestService,文件名必须是接口的全路径名
(3)com.service.TestService的内容为接口的实现类,且为实现类的全路径名