Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何创建Spring5组件索引?_Java_Spring_Maven_Spring Mvc - Fatal编程技术网

Java 如何创建Spring5组件索引?

Java 如何创建Spring5组件索引?,java,spring,maven,spring-mvc,Java,Spring,Maven,Spring Mvc,Spring Framework 5显然包含对“组件索引”的支持,该索引位于META-INF/Spring.components中,可用于避免类路径扫描,因此,我认为,可以缩短WebApp的启动时间 见: 如何为我计划升级到Spring5的现有web应用程序创建这样的组件索引 (理想情况下,它会在构建时使用Maven自动生成,但任何其他可行的方法都至少会给我一个工作的起点)Spring 5添加了一个新功能,以提高大型应用程序的启动性能 它在编译时创建组件候选列表 在此模式下,应用程序的

Spring Framework 5显然包含对“组件索引”的支持,该索引位于META-INF/Spring.components中,可用于避免类路径扫描,因此,我认为,可以缩短WebApp的启动时间

见:

如何为我计划升级到Spring5的现有web应用程序创建这样的组件索引


(理想情况下,它会在构建时使用Maven自动生成,但任何其他可行的方法都至少会给我一个工作的起点)

Spring 5添加了一个新功能,以提高大型应用程序的启动性能

它在编译时创建组件候选列表

在此模式下,应用程序的所有模块都必须使用此机制,因为当ApplicationContext检测到此类索引时,它将自动使用它,而不是扫描类路径

要生成索引,我们只需要向每个模块添加以下依赖项

Maven:

<dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context-indexer</artifactId>
        <version>5.0.3.RELEASE</version>
        <optional>true</optional>
    </dependency>
</dependencies>
dependencies {
    compileOnly("org.springframework:spring-context-indexer:5.0.3.RELEASE")
}
此过程将生成一个META-INF/spring.components文件,该文件将包含在jar中


参考资料:

Spring5增加了一项新功能,以提高大型应用程序的启动性能

它在编译时创建组件候选列表

在此模式下,应用程序的所有模块都必须使用此机制,因为当ApplicationContext检测到此类索引时,它将自动使用它,而不是扫描类路径

要生成索引,我们只需要向每个模块添加以下依赖项

Maven:

<dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context-indexer</artifactId>
        <version>5.0.3.RELEASE</version>
        <optional>true</optional>
    </dependency>
</dependencies>
dependencies {
    compileOnly("org.springframework:spring-context-indexer:5.0.3.RELEASE")
}
此过程将生成一个META-INF/spring.components文件,该文件将包含在jar中


参考:

META-INF/spring.components文件由名为
spring上下文索引器的注释处理器库生成。如果将此库作为“注释处理器路径”添加到maven编译器插件,则文件将在生成时自动生成:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-compiler-plugin</artifactId>
  <configuration>
    <annotationProcessorPaths>
      <path>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context-indexer</artifactId>
        <version>5.0.6.RELEASE</version>
      </path>
    </annotationProcessorPaths>
    ...
  </configuration>
</plugin>

org.apache.maven.plugins

META-INF/spring.components
文件由名为
spring上下文索引器的注释处理器库生成。如果将此库作为“注释处理器路径”添加到maven编译器插件,则文件将在生成时自动生成:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-compiler-plugin</artifactId>
  <configuration>
    <annotationProcessorPaths>
      <path>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context-indexer</artifactId>
        <version>5.0.6.RELEASE</version>
      </path>
    </annotationProcessorPaths>
    ...
  </configuration>
</plugin>

org.apache.maven.plugins


您是否已经签出,其中包含一些测试示例?这些示例似乎利用了一个基于注释的
@组件构建此索引
啊,不,我没有找到-谢谢,我来看看!你运气好吗?我尝试在pom中包含spring上下文索引器,但在加载时间上没有看到任何差异,也没有看到创建的索引文件。到目前为止,我还没能完成这项工作。我还没回到工作中。对不起,如果我完成了,我一定会向你汇报。它附加到Maven目标,特别是包目标,所以我所要做的就是运行mvn包,它创建了我的索引文件?这些示例似乎利用了一个基于注释的
@组件构建此索引
啊,不,我没有找到-谢谢,我来看看!你运气好吗?我尝试在pom中包含spring上下文索引器,但在加载时间上没有看到任何差异,也没有看到创建的索引文件。到目前为止,我还没能完成这项工作。我还没回到工作中。对不起,如果我完成了,我一定会向你汇报。它附加到一个Maven目标,特别是包目标,所以我所要做的就是运行mvn包,它创建了我的索引文件。是的-有趣-我会在某个时候尝试一下。不过,这里的机制(至少在maven中)向模块添加了依赖项,这似乎非常奇怪——我希望它是一个maven插件或类似的东西。生成过程中具体什么时候发生?如果您阅读文档,它说它需要IDE中的注释处理器:在IDE中使用此模式时,必须将spring上下文索引器注册为注释处理器,以确保在更新候选组件时索引是最新的!我不认为它与maven:-(最后回来尝试一下(如果有必要的话,使用provided而不是optional=true),它确实会创建一个spring.components文件-我猜添加依赖项会导致应用注释处理器(scope=provided避免实际打包jar).不幸的是,由于某种原因,导致的战争无法使用“无合格bean”进行部署例外,但这是一个不同的问题-谢谢。啊,我的问题似乎是我需要所有的依赖项,这些依赖项也创建了bean来拥有spring.components,所以我在确保了这一点之后,它就可以工作了-遗憾的是,它似乎对整个启动时间几乎没有影响(看起来平均最多可以节省1秒钟)。但是对于jar依赖,这不起作用。你能看看这个吗?是的-有趣-我会在某个时候给它一个机会。这里的机制(至少在maven中)看起来非常奇怪正在向模块添加依赖项-我本来希望它是一个maven插件或类似的东西。生成过程何时发生?如果您阅读文档,它说它需要IDE中的注释处理器:在IDE中使用此模式时,spring上下文索引器必须注册为annotation处理器,以确保在更新候选组件时索引是最新的!我不认为它与maven:-(最终获得