it_worker365

   ::  ::  ::  ::  :: 管理

最近在研究系统设计方面的东西,发现有很多通用的解决方案,包括spring配置扩展以及serviceLoader的应用,这里简单记录下serviceLoader的简单应用,网上例子很多,大同小异,本人觉得最主要的是能懂得思想,运用到系统设计之中

基本代码结构是这样的

首先定义服务接口

package com.mandy.ServiceLocaterTest1;

public interface IMyService {
    public void showService();
}

再来定义它的实现类

package com.mandy.ServiceLocaterTest1;

public class MyService1 implements IMyService {
    public void showService() {
        System.out.println("MyService1 MyService1 MyService1");
    }
}
package com.mandy.ServiceLocaterTest1;

public class MyService2 implements IMyService {
    public void showService() {
        System.out.println("MyService2 MyService2 MyService2");
    }
}

配置META-INF/services/com.mandy.IServiceLocaterTest1.IMyService

com.mandy.ServiceLocaterTest1.MyService1
com.mandy.ServiceLocaterTest1.MyService2

测试下:

package com.mandy.ServiceLocaterTest1;

import java.util.ServiceLoader;

public class TestMain {
    public static void main(String[] args) {
        ServiceLoader<IMyService> serviceLoader  = ServiceLoader.load(IMyService.class);
        for (IMyService service : serviceLoader) {
            service.showService();
        }
    }
}

 结果:

MyService1 MyService1 MyService1
MyService2 MyService2 MyService2

可以通过ServiceLoader和配置加载并遍历服务实例

 

posted on 2015-11-05 11:05  it_worker365  阅读(306)  评论(0编辑  收藏  举报