Java Meta-Inf Services

2022-09-01 03:18:11

Java中Meta-INF服务的目的是什么?


答案 1

它用于存储服务提供商配置文件。

服务提供程序是打包为 JAR 的服务提供程序接口的实现。

服务加载程序发现并加载服务提供程序配置文件中声明的所有实现。

配置文件是命名为接口的完全限定名的文件,其内容是实现的完全限定名称的列表。

下面是 javax.servlet.ServletContainerInitializer 的提供程序配置文件示例,Servlet 3.0 在 webapp 启动时使用。

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

在此示例中

  • Tomcat是服务加载器;
  • javax.servlet.ServletContainerInitializer 是 Service Provider Interface
  • 名为 javax.servlet.ServletContainerInitializer 的文件是 Service Provider 配置文件;
  • org.apache.jasper.servlet.JasperInitializer 和 org.springframework.web.SpringServletContainerInitializer 是 Service providers

当 tomcat 启动 webapp 调用两者

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

JasperInitializer 和 SpringServletContainerInitializer 类上的方法


答案 2

推荐