java中SPI是什么意思

美女程序员鼓励师

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的介绍,希望对大家有所帮助。更多Java学习指路:Java基础

本教程操作环境:windows7系统、java10版,DELL G3电脑。

以上是 java中SPI是什么意思 的全部内容, 来源链接: utcz.com/z/544021.html

回到顶部