配置
切换为 Cglib
Proxy 动态代理是 jfinal AOP 的底层实现机制。proxy 模块需要运行在 JDK 环境之下,如果需要运行在 JRE 之下,可以添加如下配置来支持:
ProxyManager.me().setProxyFactory(new CglibProxyFactory());
面的配置将切换到 cglib 对 proxy 模块的实现,需要在 pom.xml 中添加其 maven 依赖:
<dependency>
   <groupId>cglib</groupId>
   <artifactId>cglib-nodep</artifactId>
   <version>3.2.5</version>
</dependency>
整合 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 com.litongjava.jfinal.aop.Aop;
import com.litongjava.jfinal.aop.AopManager;
import com.litongjava.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);
  }
}
说明
- Spring 与 JFinal-AOP 整合: 在 - myBean()方法中,通过- SpringBeanContextUtils.setContext(applicationContext)将 Spring 的- ApplicationContext设置到- JFinal-AOP中,确保- tio-boot的 Bean 可以使用- @Autowired注解进行依赖注入。
- 添加 Autowired 支持: - Aop.addFetchBeanAnnotation(Autowired.class)方法使得- tio-boot的 Bean 可以识别- @Autowired注解,启用- Spring的依赖注入机制。
- 启用 Spring 与 Dubbo 整合: 通过 - AopManager.me().setEnableWithSpring(true)开启与- Spring的整合,同时使用- AopManager.me().setEnableDubbo(true)开启- Dubbo的支持。
- JFinal-AOP 支持的依赖查找顺序: 依赖查找的顺序为: - 首先从 Spring中查找所需的 Bean。
- 如果 Spring中不存在,则从JFinal-AOP容器中查找。
- 最后查找 Dubbo中的相关 Bean。
 
- 首先从 
这种设计确保了在不同框架下的 Bean 查找逻辑更加灵活,并能够根据项目需求进行不同层次的依赖注入。
通过以上配置,您可以在项目中实现 Spring、Dubbo 和 JFinal-AOP 的无缝整合,使得各个框架的依赖注入机制能够协同工作,提升项目的开发效率。
