在每個控制器我在Spring MVC的Web應用程序,有這樣一行:的Log4j在Spring MVC控制器:如何刪除重複
static Logger logger = Logger.getLogger(ControllerName.class);
這是一個有點重複。我怎樣才能編寫「記錄器提供的」控制器,而不必每次都重複這一行?
感謝
在每個控制器我在Spring MVC的Web應用程序,有這樣一行:的Log4j在Spring MVC控制器:如何刪除重複
static Logger logger = Logger.getLogger(ControllerName.class);
這是一個有點重複。我怎樣才能編寫「記錄器提供的」控制器,而不必每次都重複這一行?
感謝
也許你不喜歡它,但我喜歡的事情之一Project Lombok是這一個。您可以使用@ Log4j(或更好的@ Slf4j)註釋您的課程,以獲得隱形記錄器稱爲日誌。
第一個建議是有一個與以下行的所有控制器的通用基類:
public abstract class AbstractBaseController {
protected Logger logger = Logger.getLogger(this.getClass());
}
注意,記錄器不再static
- 這是不是真的有單身Spring服務/控制器的問題,但我仍覺得有點尷尬。另請參閱:Why do we declare Loggers static final?
此外,它有點違反面向對象的原則,不允許你繼承其他任何東西。這實際上是一個Java語言的限制,在斯卡拉/ slf4s你可以寫:
class SomeController extends BaseController with Logging
凡BaseController
是一個基類和Logging
是特質是混合式logger
領域的SomeController
類。很方便。
還不錯。我會試一試;) – 2012-03-14 09:30:33