1. Concept
Mécanisme de découverte de services intégré à JDK. SPI est un mécanisme dynamique de remplacement et de découverte. Par exemple, il existe une interface. Si vous souhaitez l'ajouter dynamiquement au moment de l'exécution, il vous suffit d'ajouter une implémentation. Nous rencontrons souvent l'interface java.sql.Driver, et différents fournisseurs peuvent implémenter différentes implémentations de la même interface. mysql et postgresql fournissent différentes implémentations aux utilisateurs, et le mécanisme SPI de Java peut trouver des services pour une certaine interface.
2. Exemple
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"; } }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!