Log4j в Spring mvc контроллеры: как убрать дублирование - PullRequest
3 голосов
/ 14 марта 2012

В каждом контроллере, который есть в моем веб-приложении Spring MVC, есть строка:

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

Это небольшое дублирование. Как мне написать контроллеры, предоставляемые регистратором, не повторяя эту строку каждый раз?

Спасибо

Ответы [ 2 ]

1 голос
/ 14 марта 2012

Может быть, вам это не нравится, но одна из вещей, которые мне нравятся в Project Lombok , это эта.Вы можете аннотировать свой класс с помощью @ Log4j (или, лучше, @ Slf4j), чтобы получить невидимый регистратор с именем log .

0 голосов
/ 14 марта 2012

Первое предложение состоит в том, чтобы иметь общий базовый класс для всех контроллеров со следующей строкой:

public abstract class AbstractBaseController {

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

}

Обратите внимание, что регистратор не длиннее static - на самом деле это не проблема с Singleton Springуслуги / контроллеры, но все же я нахожу это немного неловким.См. Также: Почему мы объявляем Loggers статическим финалом?

Также это немного противоречит принципам ОО и не позволяет вам наследовать от чего-либо еще.На самом деле это ограничение языка Java, в Scala / вы можете написать:

class SomeController extends BaseController with Logging 

Где BaseController - базовый класс, а Logging - черта , которая смешивает поле logger с классом SomeController.Очень удобно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...