2016-02-29 106 views
14

在我看来,SpringBoot项目需要很长时间才能加载。这可能是因为SpringBoot为您配置了组件,其中一些甚至可能不需要。 最明显的做法是从您的课程路径中删除不必要的依赖关系。但是,这还不够。最小化Spring引导启动时间

有什么方法可以找出SpringBoot为您配置哪些模块来挑选不需要的东西并禁用它们?

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

回答

25

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

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

请记住,Spring Boot遵循约定而不是配置范例,只需将类库放在类路径中就可以导致Spring Boot尝试配置模块以使用该库。而且,通过使用@RestController注释你的类这样简单的事情将会触发Spring Boot来自动配置整个Spring MVC堆栈。

您可以看到底下发生了什么,并启用调试日志记录,就像从命令行启动应用程序时指定--debug一样简单。你也可以在application.properties中指定debug = true。

此外,您可以设置日志记录级别的application.properties简单:

如果你发现你不想自动配置模块,可以将其禁用。造成这种情况的文档可以在这里找到: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 { 
} 
相关问题