问题有以下几个:

  1. dispatcherServlet 是懒加载的
  2. 数据库链接是懒加载的
  3. linux 下真随机数生成器

解决方案:

  1. servlet配置load-on-startup的作用–配置spring.mvc.servlet.load-on-startup=1
  2. 指定配置文件中spring.datasource.druid.initial-size=1,即启动时会初始化数据库连接
  3. JDK优化之熵池策略–加启动参数 -Djava.security.egd=file:/dev/./urandom
  4. Hikari设置启动时初始化数据库
@Component
public class HikariLoader {
    private final HikariDataSource hikariDataSource;

    @Autowired
    public HikariLoader(HikariDataSource hikariDataSource) {
        this.hikariDataSource = hikariDataSource;
    }

    @Autowired
    public void run(ApplicationArguments args) throws SQLException {
        hikariDataSource.getConnection();
    }
}

springboot 启动后,第一次的接口请求总是很慢,后面速度就很快,怎么解决?–v2ex的相关讨论