3

2つのメソッド「foo」と「goo」で呼び出されたBeanがあり、「goo」がAOPインターセプト呼び出しでマークされているとします。
'goo'メソッドを直接呼び出すのではなく、Beanのプロキシラッパーを介して呼び出すために'foo'内にコードを記述して、そのAOP部分をアクティブ化することは可能ですか?

public Class Pojo{

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

  @Transactional
  public void goo(){
  }
}
4

2 に答える 2

5

はい。ただし、Springプロキシを介してアクセスする必要があります。

public Class Pojo{

  @Autowired
  private Pojo springProxy;

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

  @Transactional
  public void goo(){
  }
}
于 2010-08-25T19:50:02.093 に答える
0

自動配線オプションを使用できませんでした。おそらくそれは、私がリフレクションを使用してfoo()からgoo()(および他のメソッドも)を呼び出しているためです。
したがって、最終的に私の問題を解決するのは、PojoのプロキシBeanクラスを検索するfoo()コードを追加することでした。プロキシBeanでSunの呼び出しを使用してmothdを呼び出します。これにより、AOP呼び出しも呼び出されます。
これ以上の回避策は見つかりませんでした。

于 2010-08-30T12:34:39.610 に答える