Вызвать прокси AOP, вызвав метод внутри компонента - PullRequest
3 голосов
/ 25 августа 2010

Допустим, у меня есть bean-компонент, вызванный двумя методами 'foo' и 'goo', а 'goo' помечен с помощью перехвата AOP.
возможно ли написать какой-либо фрагмент кода внутри 'foo', чтобы вызывать метод 'goo' не напрямую, а через посредник-посредник компонента, чтобы активировать его часть AOP?

public Class Pojo{

  public void foo(){
    //what should I write here in order to activate 'goo' in transactional mode??
  }

  @Transactional
  public void goo(){
  }
}

Ответы [ 2 ]

5 голосов
/ 25 августа 2010

Да, но вам нужно получить к нему доступ через весенний прокси:

public Class Pojo{

  @Autowired
  private Pojo springProxy;

  public void foo(){
    springProxy.goo();
  }

  @Transactional
  public void goo(){
  }
}
0 голосов
/ 30 августа 2010

Я не могу использовать опцию автопроводки.Возможно, это потому, что я использую рефлексию для вызова goo () (и любого другого метода также) из foo ().
Итак, в конечном итоге моя проблема была решена добавлением кода foo (), который будет искать прокси-класс Pojo.и вызвать Mothd, используя Sun-вызов на прокси-бине, который также вызвал вызов AOP.
Не удалось найти лучшего обходного пути.

...