Skip to content

Instantly share code, notes, and snippets.

@liweinan
Created August 14, 2018 06:59
Show Gist options
  • Save liweinan/10d0807a6df7dd03b077bb12d55f06c9 to your computer and use it in GitHub Desktop.
Save liweinan/10d0807a6df7dd03b077bb12d55f06c9 to your computer and use it in GitHub Desktop.

首先在META-INF/services里面撰写文件,文件名为io.weli.HelloProvider

@liweinan
Copy link
Author

相关实现如下:

image

package io.weli.serviceloader;

public class HelloProviderImpl extends HelloProvider {

    @Override
    public String getMessage() {
        return this.toString();
    }
}

@liweinan
Copy link
Author

liweinan commented Aug 14, 2018

撰写使用代码:

package io.weli.serviceloader;

/**
 * Created by liweinan on 7/7/14.
 */
public class Main {

    /*
     * mvn exec:java -Dexec.mainClass="io.weli.serviceloader.Main"
     */
    public static void main(String[] args) {
        HelloProvider provider = HelloProvider.getDefault();
        System.out.println("-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-");
        System.out.println(provider.getMessage());
        System.out.println("-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-");
    }
}

image

@liweinan
Copy link
Author

以下是执行情况:

2018-08-14 3 20 44 pm

@liweinan
Copy link
Author

liweinan commented Aug 14, 2018

核心代码在这里:

image

        ServiceLoader<HelloProvider> ldr = ServiceLoader.load(HelloProvider.class);
        for (HelloProvider provider : ldr) {
            //We are only expecting one
            return provider;
        }

@liweinan
Copy link
Author

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment