Java: добавить класс Decorating в существующую реализацию - PullRequest
1 голос
/ 28 апреля 2020

В настоящее время у меня есть следующая настройка (чтобы она была маленькой, я не публиковал все аннотации):

public class MessageRestService {

  private MessageService messageService;

  MessageRestService(MessageService messageService) {
    this.messageService = messageService;
  }

  @GetMapping
  public Response getAllMessages() {
    return messageService.getAllMessages();
  }
}


public interface MessageService {

 String getAllMessages();

}

public class MessageServiceImpl implements MessageService {

  @Override
  public String getAllMessages() {
    ...
    return messageDao.getAllMessages();
  }

}

Теперь я пытаюсь добавить класс декоратора в эту реализацию, где перед вызовом дополнительные что-то может быть сделано (например, проверка доступа или регистрация, ...).

Поэтому я попытался создать класс декоратора, который может делать f.ex. ведение журнала перед вызовом фактической реализации.

@Singleton
public class MessageDecorator implements MessageService {
  @Inject
  private final MessageService messageService;

  @Override
  public String getAllMessages() {
    // here we can log
    return messageService.getAllMessages();
  }
}

Проект компилируется без проблем, но при вызове метода getAllMessages () декоратор не вызывается, процесс (работает), как раньше, но без что-то регистрировать.

Честно говоря, я застрял, я видел один рабочий пример этого, но я уже не помню точно, что отличалось от моего подхода или где я допустил ошибку / забыл что-то изменить.

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