인터셉터 트리거링
JFinal의 AOP는 제어 계층 AOP와 비즈니스 계층 AOP로 구분됩니다. 엄밀히 말하면 비즈니스 계층 AOP는 비즈니스 계층에만 국한되지 않습니다. JFinal 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가 강화되는 데 사용되는 컨트롤러이며, Tx 인터셉터는 결제 메소드를 호출하여 트리거될 수 있습니다. 간단히 말해서 컨트롤 레이어에 비해 비즈니스 레이어 AOP의 트리거링은 Enhanced 메소드를 한 번만 더 호출하면 되며 Interceptor, Before, Clear를 사용하는 방법은 완전히 동일합니다.