問題與分析
最近開始學習spring-boot框架,我用的是Eclipse,然后發現在使用到了lombok的@Data注解時,Eclipse會編譯錯誤。@Data的作用是自動生成toString方法和setter/getter方法,可以減少大量重復性的代碼工作。
另外在使用了@Slf4j注解時,這個注解可以自動為當前類生成一個log變量,即:rivate final Logger logger = LoggerFactory.getLogger(XXX.class);。然而Eclipse無法識別log變量,會報log變量未聲明的錯誤。
一開始我以為是沒導入包或者漏了jar包,但是檢查一番后沒有問題。百度了下才知道,原來除了導包之外,還需要為Eclipse安裝該lombok插件。
解決方法
安裝方法很簡單,找到你導入的lombok的jar包,雙擊運行該jar包,會出現一個安裝界面。或者右鍵jar包,選擇打開方式,接着選擇Java (TM) Platform SE binary,會出現安裝界面。
在安裝界面選擇當前的Eclipse進程,或者點擊左下角的Specify location...選擇你要安裝插件的Eclipse,接着點右下角的Install / Update,很快就安裝完畢,點擊Quit Installer。
lombok的下載地址:https://projectlombok.org/downloads/lombok.jar
問題補充
當我安裝好lombok之后,Eclipse雖然能夠正常識別@Slf4j注解生成的log變量,但@Data注解依然無效。在使用到了pojo類的私有變量時,依然會提示說缺少setter/getter方法。折騰了好久,才發現原來是因為Eclipse自動給我的pojo類的私有變量加上final修飾符,導致setter/getter方法注入失敗了。
把pojo類的私有變量前邊的final去掉后,@Data終於生效了。之所以會自動給變量加上final修飾符,是因為我設置了Save Action,Eclipse會自動在我保存代碼的時候自動在私有變量、局部變量前加上final修飾符,這個是公司制定的代碼編程規范。
