大致上的代码结构是
@RestController
class ApiClass{
Logger logger = LoggerFactory.getLogger("log");
@Autowired
ApiService apiService;
@RequestMapping(value = "/api")
public String doApi{
logger.info("HTTP 请求 ");
String result = apiService.doService();
return ResponseUtil.jsonSuccess(result); //这里产生类似下面日志中的 json 串
}
}
@Service
class ApiService{
@Transactional
String doService(){
logger.debug("测试 1 处");
。。。
logger.debug("测试 2 处");
LocalThread.FIXED_THREAD_POOL.execute(new Runnable() {
@Override
public void run() {
doAsync(); //大量数据库操作
}
});
logger.debug("测试 3 处");
。。。
logger.debug("测试 4 处");
return "xxxx";
}
}
其中
public class LocalThread {
public static ExecutorService FIXED_THREAD_POOL = Executors.newFixedThreadPool(5);
}
2017-10-12 16:24:22,407 INFO - HTTP 请求
2017-10-12 16:26:02,943 DEBUG - 测试 1 处
2017-10-12 16:26:03,022 DEBUG - 测试 2 处
2017-10-12 16:26:03,024 DEBUG - 测试 3 处
2017-10-12 16:26:03,069 DEBUG - 测试 4 处
下面是 spring-boot 日志
2017-10-12 16:26:03,565 [http-nio-8070-exec-1] DEBUG [org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor] - Written [{"code":"2001","message":"成功","body":[{"data":"xxxx"}] as "text/html" using [org.springframework.http.converter.StringHttpMessageConverter@2bdd8394]
但是之后的请求:
2017-10-12 17:28:48,323 INFO - HTTP 请求
2017-10-12 17:28:48,324 DEBUG - 测试 1 处
2017-10-12 17:28:48,330 DEBUG - 测试 2 处
2017-10-12 17:28:48,330 DEBUG - 测试 3 处
2017-10-12 17:28:48,332 DEBUG - 测试 4 处
2017-10-12 17:28:48,337 [http-nio-8070-exec-1] DEBUG [org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor] - Written [{"code":"2001","message":"成功","body":[{"data":"xxxx"}] as "text/html" using [org.springframework.http.converter.StringHttpMessageConverter@2bdd8394]
其中,我注意到:
1 第一次请求从 controller 跳转到 service 都花了将近 2 分钟 而之后的请求没这样
2 第一次请求,从测试 1 到日志打出返回 json,花了将近 0.6 秒,而第二个则是 0.01 秒左右
为何差别这么大?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.