0

私は Spring AOP を初めて使用します。私のプロジェクトを Spring AOP で実装できるかどうかを知りたいです。具体的には、Spring AOP で、実行時に、どのアスペクトがどの順序で実行されるかを構成できるかどうかを知りたいです。注意: トランザクションやセキュリティなどの Spring 管理の側面に干渉することなく、自分のアプリケーションの側面のみを制御したい。

4

1 に答える 1

2

aspesct の順序を制御することはできますが (優先順位の宣言を使用)、実行時にこれを行うのは困難です。既に織り上げられたクラスに織り方を再適用する必要があるからです。実行するアスペクトを指定する場合も同様です。

各アスペクトメソッドの開始時に if(!enabled){return;} チェックを行うことができ、通常の Bean と同様に有効フラグをオンまたはオフに設定できます。このように、アスペクトは常に織り込まれますが、無効になっていると何もしません。

アップデート

これは、アスペクトを Bean として使用する方法の例です。次のような側面があるとしましょう。

@Component // IMPORTANT
public aspect MyAspect {
    Object responder;

    public void setResponder(Object object) {
        this.responder=object;
    }
}

次に、Spring Service クラスで、次のようにアスペクトを配線できます。

@Service
public class MyServiceImpl implements MyService {
    @Autowired
    MyAspect aspect;

    void action() {
        aspect.setResponder(null);
    }
}

これは、アスペクトが実際には Java クラスであるため機能します。コンポーネント アノテーションにより、Spring コンポーネント スキャンによってアスペクトが Bean として認識されます。私はこのコードを正常にコンパイルしましたが、実行時に実際にテストしたわけではないので、動作するかどうかを知っておくとよいでしょう.

于 2013-01-13T14:44:20.840 に答える