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是什么?的详细内容。