小编ste*_*ain的帖子

加快Spring Boot启动时间

我有一个Spring Boot应用程序.我添加了很多依赖项(不幸的是,看起来我需要所有这些依赖项)并且启动时间上升了很多.只SpringApplication.run(source, args)需要10秒钟.

虽然这与"使用"相比可能没那么多,但我很不高兴它需要那么多,主要是因为它打破了开发流程.此时应用程序本身相当小,所以我假设大部分时间都与添加的依赖项有关,而不是与应用程序类本身有关.

我假设问题是类路径扫描,但我不知道如何:

  • 确认是问题(即如何"调试"Spring Boot)
  • 如果它真的是原因,我怎么能限制它,所以它变得更快?例如,如果我知道某些依赖项或包不包含Spring应扫描的任何内容,是否有办法限制它?

我假设这个:

会加快速度,但现在甚至都没有进行分类.我在Spring Boot本身看到了一些其他的努力,例如:

但这看起来特定于Tomcat.

本文:

虽然针对集成测试,建议使用lazy-init=true,但是我不知道如何使用Java配置将这个应用于Spring Boot中的所有bean - 这里有任何指针吗?

任何(其他)建议都会受到欢迎.

java performance startup spring-boot

90
推荐指数
6
解决办法
6万
查看次数

Spring启动和maven exec插件问题

我创建了一个裸骨Maven项目,除了之外完全是空的pom.xml.

有了这个pom(请注意parent元素已注释掉):

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>springboot-test</groupId>
  <artifactId>springboot-test</artifactId>
  <version>1.0.0-SNAPSHOT</version>

<!--    <parent> -->
<!--        <groupId>org.springframework.boot</groupId> -->
<!--        <artifactId>spring-boot-starter-parent</artifactId> -->
<!--        <version>1.1.9.RELEASE</version> -->
<!--    </parent> -->

  <build>
    <plugins>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.2</version>
        <configuration>
          <source>1.7</source>
          <target>1.7</target>
        </configuration>
      </plugin>
    </plugins>
  </build>

</project>
Run Code Online (Sandbox Code Playgroud)

样品运行:

$ mvn exec:java -Dexec.mainClass=test
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building springboot-test 1.0.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- exec-maven-plugin:1.3.2:java (default-cli) @ springboot-test ---
[WARNING] Warning: killAfter is now deprecated. Do you need it ? …
Run Code Online (Sandbox Code Playgroud)

java spring maven spring-boot

12
推荐指数
1
解决办法
1万
查看次数

使用Eclipse构建DSL时,增量编译的最佳方法是什么?

正如Eclipse文档所建议的那样,我有一个org.eclipse.core.resources.IncrementalProjectBuilder编译每个源文件的文件,我也有一个org.eclipse.ui.editors.text.TextEditor可以编辑每个源文件的文件.每个源文件都编译到自己的编译单元中,但它可以引用其他(已编译的)源文件中的类型.

这个重要的两项任务是:

  1. 编译(以确保我们使用的类型实际存在)
  2. 自动完成(查找类型,以便我们可以看到它上面有哪些属性/方法)

为了实现这一点,我想在内存中存储所有已编译类型的表示(以下称为"类型存储").

我的问题有两个:

  1. 上面的任务1由构建器执行,而任务2由编辑器执行.因此,他们都可以访问这种类型的商店,我应该创建一个他们都可以访问的静态存储,还是Eclipse提供了一种更简洁的方法来处理这个问题?请注意,在需要时实例化构建器和编辑器是eclipse,而不是我.

  2. 打开eclipse时,我不想重建整个项目,所以我可以重新填充我的类型存储.到目前为止,我最好的解决方案是将这些数据保存在某处,然后从那里重新填充我的商店(也许在项目打开时).这是其他增量编译器通常如何做到这一点的吗?我相信Java的方法是使用一个特殊的解析器,从类文件中有效地提取这些数据.

任何见解都会非常感激.这是我的第一个DSL.

eclipse-plugin incremental-linking incremental-build incremental-compiler

6
推荐指数
1
解决办法
553
查看次数

如何用下一个字符串替换字符串中的字符?

我想用下一个字符替换字符串的每个字符,最后一个应该成为第一个.这是一个例子:

abcdefghijklmnopqrstuvwxyz
Run Code Online (Sandbox Code Playgroud)

应成为:

bcdefghijklmnopqrstuvwxyza
Run Code Online (Sandbox Code Playgroud)

是否可以在不使用替换功能的情况下进行26次?

python

3
推荐指数
1
解决办法
1653
查看次数