配置:
META-INF/services/MessageProcessor 文件
public interface MessageProcessor {
public boolean canProcess(String topic);
public String processMessage();
}
public class SuccessProcessor implements MessageProcessor {
@Override
public boolean canProcess(String topic) {
if(StringUtils.equals("success", topic)){
return true;
}
return false;
}
/**
* @see serviceload.MessageProcessor#processMessage()
*/
@Override
public String processMessage() {
return "success";
}
}
public class WaitPayProcessor implements MessageProcessor{
/**
* @see serviceload.MessageProcessor#canProcess()
*/
@Override
public boolean canProcess(String topic) {
if(StringUtils.equals("waitpay", topic)){
return true;
}
return false;
}
/**
* @see serviceload.MessageProcessor#processMessage()
*/
@Override
public String processMessage() {
return "waitPay";
}
}
public class Test {
/**
*
* @param args
*/
public static void main(String[] args) {
ServiceLoader<MessageProcessor> serviceLoader = ServiceLoader.load(MessageProcessor.class);
System.out.println(serviceLoader);
for (MessageProcessor service : serviceLoader) {
System.out.println(service.processMessage());
}
}
}
ServiceLoader可以实现spi的方式