1、概念
JDK內建的服務提供發現機制。 SPI是一種動態替換和發現的機制。比如有一個介面。如果你想在運行時動態添加,你只需要添加一個實作。我們常遇到java.sql.Driver介面,其他不同的廠商可以對同一個介面做出不同的實作。 mysql和postgresql為使用者提供不同的實現,Java的SPI機制可以為某個介面找到服務。
2、實例
public class KryoSerializer implements ObjectSerializer { @Override public byte[] serialize(Object obj) throws ObjectSerializerException { byte[] bytes; ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); try { //获取kryo对象 Kryo kryo = new Kryo(); Output output = new Output(outputStream); kryo.writeObject(output, obj); bytes = output.toBytes(); output.flush(); } catch (Exception ex) { throw new ObjectSerializerException("kryo serialize error" + ex.getMessage()); } finally { try { outputStream.flush(); outputStream.close(); } catch (IOException e) { } } return bytes; } @Override public <T> T deSerialize(byte[] param, Class<T> clazz) throws ObjectSerializerException { T object; try (ByteArrayInputStream inputStream = new ByteArrayInputStream(param)) { Kryo kryo = new Kryo(); Input input = new Input(inputStream); object = kryo.readObject(input, clazz); input.close(); } catch (Exception e) { throw new ObjectSerializerException("kryo deSerialize error" + e.getMessage()); } return object; } @Override public String getSchemeName() { return "kryoSerializer"; } }
以上是Java中SPI是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!