当前位置: 首页 > 面试题库 >

最大限度地减少Spring Boot的启动时间

微生博简
2023-03-14
问题内容

我认为SpringBoot项目需要很长时间才能加载。这可能是因为SpringBoot正在为您配置组件,您甚至可能不需要其中的一些组件。最明显的事情是从类路径中删除不必要的依赖关系。但是,这还不够。

有没有办法找出SpringBoot为您配置的模块,以选择不需要的模块并禁用它们?

总的来说,还有什么可以做以加快SpringBoot应用程序的启动时间吗?


问题答案:

我可以告诉你,我通过SpringMVC,JMS,Atomikos事务,Hibernate,JMX支持和嵌入式Tomcat使用宁静的Web服务来运行大型(800,000行代码)应用程序。有了这些,该应用程序将在大约19秒内在我的本地桌面上启动。

Spring Boot努力不配置您不使用的模块。但是,很容易引入您不需要的其他依赖关系和配置。

请记住,Spring Boot遵循配置范例上的约定,只需在类路径中放置一个库即可导致Spring
Boot尝试配置一个模块以使用该库。另外,通过使用@RestController注释类这样的简单操作,将触发Spring Boot自动配置整个SpringMVC堆栈。

您可以查看幕后情况,并启用调试日志记录,就像--debug从命令行启动应用程序时一样简单。您还可以在application.properties中指定debug= true。

此外,您可以通过以下application.properties简单方式设置日志记录级别:

logging.level.org.springframework.web: DEBUG
logging.level.org.hibernate: ERROR

如果检测到不需要的自动配置模块,则可以将其禁用。可以在这里找到有关此文档:http : //docs.spring.io/spring-boot/docs/current-
SNAPSHOT/reference/htmlsingle/#using-boot-disabling-specific-auto-
configuration

一个例子如下:

@Configuration
@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
public class MyConfiguration {
}


 类似资料:
  • 我已经在树莓派7英寸上安装了tarantool,并希望尽量减少与硬盘(sd卡)的交互。有什么简单的方法可以做到这一点。hdd的真正用法是什么?

  • 我有一个flink作业,从kafka读取数据,从redis读取一些数据,然后将聚合的窗口数据写入redis接收器(redis写入操作实际上是调用加载到redis中的lua脚本,该脚本会增加现有值,因此我只能在此处增加而不能更新)。 问题是,当我停止作业(维护、代码更改等)时,即使使用保存点,我也会向redis写入重复数据,或者在恢复时丢失一些数据,因为据我所知,redis sink在语义方面没有任

  • 问题内容: 我是Java的初学者,也是我的一项工作。我必须做数据库操作。我有用于将数据插入数据库的Java代码,它工作正常。 我的问题是每次代码运行时,我的代码都必须创建一个数据库连接和准备好的语句对象,据我所知,这是一项昂贵的操作。 有什么方法可以保持与数据库的单个连接,并使用该连接来执行数据库工作? 问题答案: 您可以像这样使用设计模式Singleton Connection: 1-创建一个类

  • 问题内容: 我们将Java 6 JRE与我们的应用程序安装程序捆绑在一起,以便可以在任何计算机上运行,​​但这会使应用程序变得更重。因此,我们计划减小JRE的大小。如果有人完成了此类任务,您能否提供指导以继续前进? 问题答案: 查看JRE目录中的README文件。“可选文件和目录”部分列出了一些文件(如果将它们与应用程序打包在一起,可以从Oracle / Sun JRE中删除)。 创建安装时,我使

  • 我想减少一个胖springboot jar文件的占用空间。 这个问题的答案实际上涵盖了开发占用空间更小的spring boot应用程序的所有内容 2-有没有列出我必须排除的自动配置类,我可以去调试看看springboot是自动配置的什么,并拾取我不需要的,但是我正在寻找一些东西,比如一个脚本来检查代码,并给我一个我必须排除的自动配置类的列表。 Gradle用于依赖关系管理。

  • 问题内容: 我对Java世界一无所知(我主要使用C / Python),但是Scala看起来很有趣,足以吸引我。我遇到的一个问题是巨大的启动开销- 最少0.3秒,如果我这样做,则更多m使用解释器而不是编译,相比之下,Python或C的有效值为0。因此,即使该语言运行起来比Python快数十倍,但如果我尝试将其用于简单任务,它的运行速度仍然相当慢实践。 是否有任何方法可以减少这种时间,或者这是JVM