2012-03-14 25 views
3

在每個控制器我在Spring MVC的Web應用程序,有這樣一行:的Log4j在Spring MVC控制器:如何刪除重複

static Logger logger = Logger.getLogger(ControllerName.class); 

這是一個有點重複。我怎樣才能編寫「記錄器提供的」控制器,而不必每次都重複這一行?

感謝

回答

1

也許你不喜歡它,但我喜歡的事情之一Project Lombok是這一個。您可以使用@ Log4j(或更好的@ Slf4j)註釋您的課程,以獲得隱形記錄器稱爲日誌

+0

還不錯。我會試一試;) – 2012-03-14 09:30:33

0

第一個建議是有一個與以下行的所有控制器的通用基類:

public abstract class AbstractBaseController { 

    protected Logger logger = Logger.getLogger(this.getClass()); 

} 

注意,記錄器不再static - 這是不是真的有單身Spring服務/控制器的問題,但我仍覺得有點尷尬。另請參閱:Why do we declare Loggers static final?

此外,它有點違反面向對象的原則,不允許你繼承其他任何東西。這實際上是一個Java語言的限制,在斯卡拉/ 你可以寫:

class SomeController extends BaseController with Logging 

BaseController是一個基類和Logging特質是混合式logger領域的SomeController類。很方便。