インターセプターのトリガー
JFinal の AOP は、コントロール層 AOP とビジネス層 AOP に分かれています。JFinal AOP は他の場所でも適用できるため、ビジネス層 AOP はビジネス層での使用に限定されません。
レイヤーインターセプターのトリガーを制御するには、アクションリクエストを開始するだけです。ビジネス層インターセプターをトリガーするには、まず、enhanced メソッドを使用してターゲット オブジェクトを拡張し、次にターゲット メソッドを呼び出す必要があります。以下は、ビジネス層での AOP の使用例です。
// 定义需要使用AOP的业务层类 public class OrderService { // 配置事务拦截器 @Before(Tx.class) public void payment(int orderId, int userId) { // service code here } } // 定义控制器,控制器提供了enhance系列方法可对目标进行AOP增强 public class OrderController extends Controller { public void payment() { // 使用 enhance方法对业务层进行增强,使其具有AOP能力 OrderService service = enhance(OrderService.class); // 调用payment方法时将会触发拦截器 service.payment(getParaToInt("orderId"), getParaToInt("userId")); } }
上記のコードでは、OrderService はビジネス層クラスであり、Tx トランザクション インターセプターは支払い方法で構成されており、 OrderController はコントローラーであり、これを使用します。 OrderSevice は、enhanced メソッドで拡張され、その支払いメソッドを呼び出すことで Tx インターセプターをトリガーできます。つまり、制御層と比較して、ビジネス層 AOP のトリガーには、enhanced メソッドの呼び出しを 1 回増やすだけで済み、Interceptor、Before、Clear の使用方法はまったく同じです。