4.5 Interceptor 的觸發(fā)

2022-07-11 10:17 更新

JFinal 中的 AOP 被劃分為控制層 AOP 以及業(yè)務(wù)層 AOP,嚴(yán)格來說業(yè)務(wù)層 AOP 并非僅限 于在業(yè)務(wù)層使用,因?yàn)?nbsp;JFinal AOP 可以應(yīng)用于其它任何地方。

控制層攔截器的觸發(fā),只需發(fā)起 action 請(qǐng)求即可。業(yè)務(wù)層攔截器的觸發(fā)需要先使用 enhance方法對(duì)目標(biāo)對(duì)象進(jìn)行增強(qiáng),然后調(diào)用目標(biā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系列方法可對(duì)目標(biāo)進(jìn)行AOP增強(qiáng)
public class OrderController extends Controller {
	public void payment() {
	// 使用 enhance方法對(duì)業(yè)務(wù)層進(jìn)行增強(qiáng),使其具有AOP能力 OrderService service = enhance(OrderService.class);
 
	// 調(diào)用payment方法時(shí)將會(huì)觸發(fā)攔截器
	service.payment(getParaToInt("orderId"), getParaToInt("userId"));
	}
}

以上代碼中 OrderService 是業(yè)務(wù)層類,其中的 payment 方法之上配置了 Tx 事務(wù)攔截器, OrderController 是控制器,在其中使用了 enhance 方法對(duì) OrderSevice 進(jìn)行了增強(qiáng),隨后調(diào)用其 payment 方法便可觸發(fā) Tx 攔截器。簡言之,業(yè)務(wù)層 AOP 的觸發(fā)相對(duì)于控制層僅需多調(diào)用一次 enhance 方法即可,而 Interceptor、Before、Clear 的使用方法完全一樣。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)