springboot中logger采用static final进行修饰:
@Controller
public class JspController {
private static final Logger logger = LoggerFactory.getLogger(JspController.class);
@RequestMapping("/jspIndex")
public String jspIndex() {
logger.info("springboot 集成logger 日志成功!!!");
return "jspIndex";
}
}
为什么要用static还有final呢??
1. 定义成static final类型的变量,logger变量不可进行变更,第一次加载就加载到内存在中,读取速度快;
2. static 修饰的变量是不管创建了new了多少个实例,也只创建一次,节省空间,如果每次都创建Logger的话比较浪费内存;final修饰表示不可更改常量,将域定义为static,每个类中只有一个这样的域.而每一个对象对于所有的实例域却都有自己的一份拷贝.,用static修饰既节约空间,效率也高。final 是本 logger 不能再指向其他 Logger 对象;
3.出于资源利用的考虑,LOGGER的构造方法参数是Class,决定了LOGGER是根据类的结构来进行区分日志,所以一个类只要一个LOGGER就可以了,故static。