Pencetusan Pemintas
AOP dalam JFinal terbahagi kepada lapisan kawalan AOP dan lapisan perniagaan AOP Tegasnya, lapisan perniagaan AOP tidak terhad untuk digunakan dalam lapisan perniagaan, kerana JFinal AOP boleh digunakan di tempat lain.
Untuk mengawal pencetus pemintas lapisan, cuma mulakan permintaan tindakan. Untuk mencetuskan pemintas lapisan perniagaan, anda perlu menggunakan kaedah enhance dahulu untuk meningkatkan objek sasaran, dan kemudian memanggil kaedah sasaran. Berikut ialah contoh penggunaan AOP dalam lapisan perniagaan:
// 定义需要使用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")); } }
Dalam kod di atas, OrderService ialah kelas lapisan perniagaan, di mana pemintas transaksi Tx dikonfigurasikan pada kaedah pembayaran, dan OrderController ialah pengawal, yang digunakan The OrderSevice dipertingkatkan dengan kaedah peningkatan, dan kemudian pemintas Tx boleh dicetuskan dengan memanggil kaedah pembayarannya. Ringkasnya, berbanding dengan lapisan kawalan, pencetusan lapisan perniagaan AOP hanya memerlukan satu lagi panggilan ke kaedah peningkatan, dan kaedah menggunakan Interceptor, Before, dan Clear adalah sama.