Java での Meta-INF サービスの目的は何ですか?
質問する
19429 次
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 に答える