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란 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!