JFinal AOPJFinal AOP
源码
Tio Boot
GitHub
源码
Tio Boot
GitHub
  • JFinal AOP
  • JFinal-aop
  • Aop 工具类
  • 配置
  • 独立使用 JFinal Aop
  • @AImport
  • 自定义注解拦截器
  • 原理解析

配置

  • 代理工厂
  • 整合 Spring 与 Dubbo
    • 说明

代理工厂

Proxy 动态代理是 jfinal-aop 的底层实现机制。默认实现会生成并编译 Java 代码,因此需要运行在 JDK 环境中(运行时需要 javax.tools.JavaCompiler)。jfinal-aop 不再内置 CGLIB 实现;如需其他实现,可以继承 nexus.io.jfinal.proxy.ProxyFactory 后替换:

ProxyManager.me().setProxyFactory(new MyProxyFactory());

调试时可以把生成的代理类打印到控制台:

ProxyManager.me().setPrintGeneratedClassToConsole(true);

整合 Spring 与 Dubbo

以下代码展示了如何通过 JFinal-AOP 实现对 Spring 和 Dubbo 的支持。JFinal-AOP 提供了一种灵活的依赖注入方式,并支持通过 AOP 进行与 Spring 和 Dubbo 的无缝整合。

import javax.annotation.PostConstruct;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Configuration;

import nexus.io.jfinal.aop.Aop;
import nexus.io.jfinal.aop.AopManager;
import nexus.io.jfinal.spring.SpringBeanContextUtils;

import lombok.extern.slf4j.Slf4j;

@Configuration
@Slf4j
public class SpringBeanContextConfig {

  @Autowired
  private ApplicationContext applicationContext;

  @PostConstruct
  public void myBean() {

    SpringBeanContextUtils.setContext(applicationContext);
    // 让 tio-boot的bean支持Autowired注解
    log.info("add Autowired");
    Aop.addFetchBeanAnnotation(Autowired.class);

    // 开启和spring的整合
    AopManager.me().setEnableWithSpring(true);
    // 开启整合Dubbot
    AopManager.me().setEnableDubbo(true);

  }
}

说明

  1. Spring 与 JFinal-AOP 整合: 在 myBean() 方法中,通过 SpringBeanContextUtils.setContext(applicationContext) 将 Spring 的 ApplicationContext 设置到 JFinal-AOP 中,确保 tio-boot 的 Bean 可以使用 @Autowired 注解进行依赖注入。

  2. 添加 Autowired 支持: Aop.addFetchBeanAnnotation(Autowired.class) 方法使得 tio-boot 的 Bean 可以识别 @Autowired 注解,启用 Spring 的依赖注入机制。

  3. 启用 Spring 与 Dubbo 整合: 通过 AopManager.me().setEnableWithSpring(true) 开启与 Spring 的整合,同时使用 AopManager.me().setEnableDubbo(true) 开启 Dubbo 的支持。

  4. JFinal-AOP 支持的依赖查找顺序: 依赖查找的顺序为:

    • 首先从 Spring 中查找所需的 Bean。
    • 如果 Spring 中不存在,则从 JFinal-AOP 容器中查找。
    • 最后查找 Dubbo 中的相关 Bean。

这种设计确保了在不同框架下的 Bean 查找逻辑更加灵活,并能够根据项目需求进行不同层次的依赖注入。

通过以上配置,您可以在项目中实现 Spring、Dubbo 和 JFinal-AOP 的无缝整合,使得各个框架的依赖注入机制能够协同工作,提升项目的开发效率。

Edit this page
最近更新: 2026/11/5 01:47
Contributors: Tong Li, Claude Opus 5.5
Prev
Aop 工具类
Next
独立使用 JFinal Aop