W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
JFinal 中的 AOP 被劃分為控制層 AOP 以及業(yè)務(wù)層 AOP,嚴格來說業(yè)務(wù)層 AOP 并非僅限 于在業(yè)務(wù)層使用,因為 JFinal AOP 可以應(yīng)用于其它任何地方。
控制層攔截器的觸發(fā),只需發(fā)起 action 請求即可。業(yè)務(wù)層攔截器的觸發(fā)需要先使用 enhance方法對目標對象進行增強,然后調(diào)用目標方法即可。以下是業(yè)務(wù)層 AOP 使用的例子:
// 定義需要使用AOP的業(yè)務(wù)層類
public class OrderService {
// 配置事務(wù)攔截器
@Before(Tx.class)
public void payment(int orderId, int userId) {
// service code here
}
}
// 定義控制器,控制器提供了enhance系列方法可對目標進行AOP增強
public class OrderController extends Controller {
public void payment() {
// 使用 enhance方法對業(yè)務(wù)層進行增強,使其具有AOP能力 OrderService service = enhance(OrderService.class);
// 調(diào)用payment方法時將會觸發(fā)攔截器
service.payment(getParaToInt("orderId"), getParaToInt("userId"));
}
}
以上代碼中 OrderService 是業(yè)務(wù)層類,其中的 payment 方法之上配置了 Tx 事務(wù)攔截器, OrderController 是控制器,在其中使用了 enhance 方法對 OrderSevice 進行了增強,隨后調(diào)用其 payment 方法便可觸發(fā) Tx 攔截器。簡言之,業(yè)務(wù)層 AOP 的觸發(fā)相對于控制層僅需多調(diào)用一次 enhance 方法即可,而 Interceptor、Before、Clear 的使用方法完全一樣。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: