## 9.32 log框架 下列代码来自俩个日志输出框架Slf4j和common log,前者有占位符,后者字符串拼接,你觉得哪个好,为什么spring源码使用了后者 ```java log.info(" order id {},user id {}",order.getId(),order.getUserId()); ``` ```java //spring 使用 log.info(" order id "+order.getId()+",user id "+order.getUserId()); ``` 答案 spring使用后者主要原因就是因为性能问题,前者占位符使得程序更容易读懂,但占位符解析需要耗费时间。 再看看slf4j关于info的接口,定义,你觉得前俩个方法的定义是多余的么,只要`Object... var2` 即可? ```java void info(String var1, Object var2); void info(String var1, Object var2, Object var3); void info(String var1, Object... var2); ``` 答案,对于`Object... var2`,实际上需要一个数组来维护。可以参考字节码查看可变数组如何构成,slf4j从性能微优化角度 ,所以定义了当参数有只有一个和参数只有俩个的方法