配置
切换为 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
的无缝整合,使得各个框架的依赖注入机制能够协同工作,提升项目的开发效率。