问题:第一次登录比较慢
1.先从dispatchServlet的初始化出发
//application.yaml
spring:
mvc:
servlet:
load-on-startup: 1
使得项目启动时就初始化dispatcherServlet
结果发现优化效果不太好(基本没有优化
2.当登录时在控制栏发现Hikari数据源的启动和初始化耗费了很长时间,所以优化可以从数据库方面入手。
解决方案:可以实现ApplicationRunner类,使得项目启动就执行
@Component
@Slf4j
public class InitRunner implements ApplicationRunner {
@Autowired
IUserService userService;
@Override
public void run(ApplicationArguments args) throws Exception {
userService.getById(1);
log.info("启动初始化数据源成功");
}
}
之后登录优化效果
3.在控制台发现登录只花了58ms,而上面看却是185ms
用debug查看详细日志信息发现原来耗在了web访问方面。
解决方案:发送请求,初始化tomcat连接
@Component
@Slf4j
public class InitRunner implements ApplicationRunner {
@Autowired
IUserService userService;
@Override
public void run(ApplicationArguments args) throws Exception {
userService.getById(1);
log.info("启动初始化数据源成功");
// 发送一次异步的web请求,来初始化 tomcat连接
ThreadUtil.execAsync(() -> {
HttpUtil.get("http://localhost:9090/");
log.info("启动项目tomcat连接查询成功");
});
}
效果: