昨天,一位球友问我能不能给他解释一下 @SpringBootApplication
注解是什么意思,还有 Spring Boot 的运行原理,于是我就带着他扒拉了一下这个注解的源码,还有 SpringApplication
类的 run()
方法的源码,一下子他就明白了。
你别说,看源码的过程还真的是挺有趣,这不,我就发现了一个有意思的点。
public ConfigurableApplicationContext run(String... args) {
StopWatch stopWatch = new StopWatch();
stopWatch.start();
......
stopWatch.stop();
}
复制代码
Spring Boot 是用 StopWatch 来统计耗时的,而通常情况下,我们会用 System.currentTimeMillis()
来统计耗时,对吧?编程喵🐱开源项目里就有这样一段代码,在处理统一日志处理切面的时候。
@Around("webLog()")
public Object doAround(ProceedingJoinPoint joinPoint) throws Throwable {
long startTime = System.currentTimeMillis();
long endTime = System.currentTimeMillis();
webLog.setSpendTime((int) (endTime - startTime));
}
复制代码
对比之下,我们就能发现,JDK 提供的 System.current