38

Java での Meta-INF サービスの目的は何ですか?

4

3 に答える 3

23

サービス プロバイダーの構成ファイルを格納することを目的としています。

サービス プロバイダーは、JAR としてパッケージ化されたサービス プロバイダー インターフェイスの実装です。

サービス ローダーは、サービス プロバイダーの構成ファイルで宣言されているすべての実装を検出してロードします。

構成ファイルは、インターフェースの完全修飾名として名前が付けられたファイルであり、その内容は実装の完全修飾名のリストです。

以下は、webapp の起動時に Servlet 3.0 によって使用される javax.servlet.ServletContainerInitializer のプロバイダー構成ファイルの例です。

org.apache.jasper.servlet.JasperInitializer
org.springframework.web.SpringServletContainerInitializer

この例では

  • Tomcat はサービス ローダーです。
  • javax.servlet.ServletContainerInitializer はサービス プロバイダ インターフェースです
  • javax.servlet.ServletContainerInitializer という名前のファイルは、サービス プロバイダーの構成ファイルです。
  • org.apache.jasper.servlet.JasperInitializer および org.springframework.web.SpringServletContainerInitializer はサービス プロバイダーです。

Tomcat スタートアップ webapp が両方を呼び出す場合

onStartup(java.util.Set<java.lang.Class<?>> types, ServletContext context)

JasperInitializer および SpringServletContainerInitializer クラスのメソッド

于 2018-10-11T09:30:46.267 に答える
18

ServiceLoaderドキュメントを見てください。

于 2010-12-28T17:06:25.887 に答える