一尘不染

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

spring-boot

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

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

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


阅读 779

收藏
2020-05-30

共1个答案

一尘不染

我可以告诉你,我通过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 {
}
2020-05-30