Déclenchement de l'intercepteur


AOP dans JFinal est divisé en couche de contrôle AOP et couche métier AOP À proprement parler, la couche métier AOP n'est pas limitée à une utilisation dans la couche métier, car JFinal AOP peut être appliqué n'importe où ailleurs.

Pour contrôler le déclenchement de l'intercepteur de couche, il suffit de lancer une demande d'action. Pour déclencher l'intercepteur de couche métier, vous devez d'abord utiliser la méthode Enhance pour améliorer l'objet cible, puis appeler la méthode cible. Voici un exemple d'utilisation d'AOP dans la couche métier :

// 定义需要使用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"));
	}
}


Dans le code ci-dessus, OrderService est la classe de la couche métier, dans laquelle l'intercepteur de transaction Tx est configuré sur le mode de paiement, et OrderController est le contrôleur utilisé. Le OrderSevice est amélioré avec la méthode d'amélioration, puis l'intercepteur Tx peut être déclenché en appelant son mode de paiement. En bref, par rapport à la couche de contrôle, le déclenchement de l'AOP de la couche métier ne nécessite qu'un seul appel supplémentaire à la méthode d'amélioration, et les méthodes d'utilisation d'Interceptor, Before et Clear sont exactement les mêmes.