SpringBoot启动优化
显示声明扫包范围:
即不使用@SpringBootApplication默认扫包,使用ComponentScan注解显示声明扫包范围。
@ComponentScan(basePackages={ “com.xxx.controller” ,“com.xxx.service” })
原因是@SpringBootApplication默认扫包,扫的是启动类下的所有子包,实际开发场景中有很多包是不需要扫的,所以用默认的扫包会去扫很多本来就不用扫的包。
验证是否有优化效果的时候,如果是自己写的demo,验证不出来,因为包和类太少了,可以用公司的实际项目验证一下,启动会快很多。
SpringBoot运行优化
使用Undertow服务器:
默认情况下,SpringBoot 使用 Tomcat 来作为内嵌的 servlet 容器。可以将 web 服务器切换到 Undertow 来提高应用性能。
Undertow 是一个采用 Java 开发的灵活的高性能 web 服务器,提供包括阻塞和基于 NIO 的非阻塞机制。Undertow 是红帽公司的开源产品,是 Wildfly 默认的 web 服务器。
过多的就不在介绍了,自行百度了解更多。
首先移除 Tomcat
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
添加 Undertow 依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-undertow</artifactId>
</dependency>
Tomcat 与 Undertow 吞吐量对比(在本人电脑上实际测试)
SpringBoot JVM参数调优
根据服务器的内存大小,来设置堆参数。
-Xms :设置Java堆栈的初始化大小 -Xmx :设置最大的java堆大小 实例参数-XX:+PrintGCDetails -Xmx32M -Xms1M
本地项目调优
外部运行调优
java -server -Xms32m -Xmx32m -jar springboot_v2.jar