インターセプターのトリガー


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 の使用方法はまったく同じです。