1.建立一个spring boot的工程
这一步就不详细介绍了
2.搬一个控制器
```
@SpringBootApplication
@RestController
public class DemoApplication {
@GetMapping("/")
public String home() {
return "Hello";
}
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
```
此时的启动时间是: Started DemoApplication in 3.188 seconds (JVM running for 4.203)
3.加入webflux依赖
```
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webflux</artifactId>
</dependency>
```
此时的启动时间是: Started DemoApplication in 3.977 seconds (JVM running for 7.735)
好像慢了一点,不太了解webflux是用来干什么的,之前没用到过.查了一下可以在于在固定资源条件下,提高系统吞吐量
4.spring-context-indexer
它似乎创建了组件索引。对大项目有很多组件时有效果
```
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-context-indexer</artifactId>
<optional>true</optional>
</dependency>
```
此时的启动时间是:Started DemoApplication in 3.913 seconds (JVM running for 4.903)
看不出来有什么大变化
5. 惰性初始化
代码:
```
@Configuration
public class LazyInitBeanFactoryPostProcessor implements BeanFactoryPostProcessor {
@Override
public void postProcessBeanFactory(ConfigurableListableBeanFactory configurableListableBeanFactory) throws BeansException {
for (String beanName : configurableListableBeanFactory.getBeanDefinitionNames()) {
configurableListableBeanFactory.getBeanDefinition(beanName).setLazyInit(true);
}
}
}
```
此时的启动时间是:Started DemoApplication in 3.371 seconds
仿佛变快了呀
6.NoVerify
-noverify 参数作用: 关闭 Java 字节码的校验功能。当 ClassLoader 加载的Java 字节码时,字节码首先接受校验器(verifier)的校验。校验器负责检查那些指令无法执行的明显的破坏性的操作
此时的启动时间是:Started DemoApplication in 1.175 seconds
实现了质的飞跃啊!
配置方法:settings -> maven -> runner -> vm options ->noverify
7.TieredStopAtLevel
-XX:TieredStopAtLevel=1 :查了一圈不知道用来干什么的!
此时的启动时间是:Started DemoApplication in 1.126 seconds
8.指定 SpringConfigLocation 参数
运行加 -Dspring.config.location=classpath:/application.properties:
此时的启动时间是:Started DemoApplication in 1.138 seconds
9.关闭 JMX
运行加 -Dspring.jmx.enabled=false:
此时的启动时间是:Started DemoApplication in 1.123 seconds
10.取消 Logback
```
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webflux</artifactId>
<exclusions>
<exclusion>
<artifactId>spring-boot-starter-logging</artifactId>
<groupId>org.springframework.boot</groupId>
</exclusion>
</exclusions>
</dependency>
```
此时的启动时间是:Started DemoApplication in 1.103 seconds
离目标越来越近了!
11.取消 Jackson
```
<exclusion>
<artifactId>spring-boot-starter-json</artifactId>
<groupId>org.springframework.boot</groupId>
</exclusion>
```
此时的启动时间是:Started DemoApplication in 1.101 seconds
仿佛没什么用,取消函数库感觉变化不大,就不做别的取消了
12.AppCDS
AppCDS 是JDK 10 以后才有的新特性,我现在用的版本是8,于是我兴冲冲去下了个 jdk 11,发现没有 .exe文件,百度了一圈都是让我找EXE文件进行安装(百度害我),后面发现是免安装的,被自己蠢哭.
所以你去官网下载之后只要配置你本地的JAVA_HOME就好了.
然后发现,速度并没有变快,是我的手法有什么问题吗?
差不多,我能做到的极限好像就是1秒了,但是也比原来快了2秒,也快了不少了