
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


















































暂无评论内容