1、概念
JDK内置的服务提供发现机制。SPI是一种动态替换和发现的机制。比如有一个界面。如果你想在运行时动态添加,你只需要添加一个实现。我们经常遇到java.sql.Driver界面,其他不同的厂商可以对同一个界面做出不同的实现。mysql和postgresql为用户提供不同的实现,Java的SPI机制可以为某个界面找到服务。
2、实例
publicclassKryoSerializerimplementsObjectSerializer{ @Override publicbyte[]serialize(Objectobj)throwsObjectSerializerException{ byte[]bytes; ByteArrayOutputStreamoutputStream=newByteArrayOutputStream(); try{ //获取kryo对象 Kryokryo=newKryo(); Outputoutput=newOutput(outputStream); kryo.writeObject(output,obj); bytes=output.toBytes(); output.flush(); }catch(Exceptionex){ thrownewObjectSerializerException("kryoserializeerror"+ex.getMessage()); }finally{ try{ outputStream.flush(); outputStream.close(); }catch(IOExceptione){ } } returnbytes; } @Override public<T>TdeSerialize(byte[]param,Class<T>clazz)throwsObjectSerializerException{ Tobject; try(ByteArrayInputStreaminputStream=newByteArrayInputStream(param)){ Kryokryo=newKryo(); Inputinput=newInput(inputStream); object=kryo.readObject(input,clazz); input.close(); }catch(Exceptione){ thrownewObjectSerializerException("kryodeSerializeerror"+e.getMessage()); } returnobject; } @Override publicStringgetSchemeName(){ return"kryoSerializer"; } }
以上就是java中SPI的介绍,希望对大家有所帮助。更多Java学习指路:Java基础
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
暂无评论内容