1. Konzept
JDKs integrierter Service-Erkennungsmechanismus. SPI ist ein dynamischer Ersetzungs- und Erkennungsmechanismus. Es gibt zum Beispiel eine Schnittstelle. Wenn Sie es zur Laufzeit dynamisch hinzufügen möchten, müssen Sie lediglich eine Implementierung hinzufügen. Wir stoßen häufig auf die Schnittstelle java.sql.Driver, und verschiedene Anbieter können unterschiedliche Implementierungen derselben Schnittstelle implementieren. MySQL und Postgresql bieten unterschiedliche Implementierungen für Benutzer, und der SPI-Mechanismus von Java kann Dienste für eine bestimmte Schnittstelle finden.
2. Beispiel
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"; } }
Das obige ist der detaillierte Inhalt vonWas ist SPI in Java?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!