ExpertiDict

Java · Avançado · Inglês · Técnico

ServiceLoader

/ˈsɜrvɪs ˈloʊdər/substantivo

Mecanismo do JDK para descobrir implementações de uma interface em execução, declaradas em META-INF/services ou no module-info com provides.

Onde usar

Aparece em drivers JDBC, SLF4J e plugins: o código pede ServiceLoader.load(Interface.class) e itera. Evita dependência direta da implementação.

Em código

interface Plugin { String nome(); }
var todos = ServiceLoader.load(Plugin.class);
for (var p : todos) {
  System.out.println(p.nome());
}
// META-INF/services/com.exemplo.Plugin:
// com.exemplo.PluginPdf

Exemplos

The plugins are discovered through ServiceLoader.

Os plugins são descobertos por meio do ServiceLoader.

Nothing was found because the services file is missing.

Nada foi encontrado porque falta o arquivo de services.

Cuidado

A implementação precisa ser registrada e ter construtor público sem argumentos (ou método provider); senão o loader não a encontra e não avisa.

Sinônimos

SPI

Veja também

Todos os termos de Java