Как я могу запустить функцию до текущей функции, используя аннотации? - PullRequest
1 голос
/ 09 апреля 2010

Есть ли способ использовать аннотацию для запуска функции перед вызываемой в данный момент функцией, что-то вроде этого:

public void doSomethingEarlier() {
}

@DoSomethingEarlier
public void doSomething() {
}

Итак, я хочу вызвать функцию doSomethin (), и перед ее выполнением я хочу автоматически запустить функцию doSomethingEarlier ().

Ответы [ 4 ]

2 голосов
/ 09 апреля 2010

У вас есть несколько способов, которые немного сложно реализовать:

  • используйте Proxy, где вы можете проанализировать аннотацию целевого метода и вызвать метод с тем же именем
  • использование AOP

Первый подход более прост. Вероятно, было бы лучше, чтобы аннотация выглядела примерно так:

@BeforeMethod("methodName")

Как правило, АОП работает на низком уровне.

0 голосов
/ 09 апреля 2010

Это проще ...

public void doSomethingEarlier() {
}

public void doSomething() {
    doSomethingEarlier();
}
0 голосов
/ 09 апреля 2010

Да, вы можете использовать аннотации для этого. Вы должны создать собственную аннотацию @DoSomethingEarlier (с сохранением во время выполнения) и написать свой собственный процессор процессора аннотаций. Это нелегкое предложение, и вы можете поискать другие альтернативы, такие как AOP или динамические прокси (которые тоже могут быть непростыми)

0 голосов
/ 09 апреля 2010

См. Пружинно-ориентированное программирование.

Java не сделает этого за вас. Кто-то еще: вы или какая-то библиотека: должен увидеть аннотацию и настроить процесс вызова.

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