Как включать/выключать настройки класса через application.properties БЕЗ Spring Boot

Написал свой класс логгирования для Http запросов и использую его в @ControllerAdvice

public class HttpLogger {
    public static void logging(Object handlerClass,
                               HttpServletRequest req,
                               HttpServletResponse resp,
                               Exception e) {
        Log.logger.info("{} catch and try to resolve exception;" +
                "\nException message: {};" +
                "\nException class: {};" +
                "\nTime creating exception: {};", handlerClass.getClass(), e.getMessage(), e.getClass(), ZonedDateTime.now(ZoneId.of("Z")));
        Log.logger.info("HTTP Method - {}" +
                "\nHTTP Status - {}" +
                "\nRequestURI {}", req.getMethod(), resp.getStatus(), req.getRequestURI());
    }
}

Я не использую SpringBoot, но хочу сделать следующее: В application.properties добавить параметр httpLogger.enabled=true. Когда значение true - происходи логгирование, false - соответственно нет.

В голову пришла идея:

  1. Сканировать application.properties
  2. Найти свой параметр httpLogger.enabled
  3. В зависимости от значения логгировать.

Метод будет иметь +- такой вид

if(enabled){
    //логировать
} else {
    //ничего не делать
}

И собственно сам вопрос: я понимаю, что это будет правильно работать, но может есть какое-то более изящное решение проблемы? Не хочу изобретать велосипед.

Также задумываюсь про BeanPostProcessor и там через MBean всё контролировать.


Ответы (1 шт):

Автор решения: Илья Гопак

Не знаю самый ли правильный это вариант, но я сделал так:

@Component
@PropertySource("classpath:application.properties")
public class HttpLogger {

    @Value("${httpLogger.enabled}")
    private boolean enabled;

    public void logging(Object handlerClass,
                               HttpServletRequest req,
                               HttpServletResponse resp,
                               Exception e) {
        if (enabled) {
            Log.logger.info("{} catch and try to resolve exception;" +
                    "\nException message: {};" +
                    "\nException class: {};" +
                    "\nTime creating exception: {};", handlerClass.getClass(), e.getMessage(), e.getClass(), ZonedDateTime.now(ZoneId.of("Z")));
            Log.logger.info("HTTP Method - {}" +
                    "\nHTTP Status - {}" +
                    "\nRequestURI {}", req.getMethod(), resp.getStatus(), req.getRequestURI());
        }
    }
}
→ Ссылка