jfinal Enhancer 如果A类引用了B类,B类应用了A类,死循环。。。

/**
 * 根据bean类获取bean
 *     如果未生成过,则重新生成
 *     如果生成过,从已经生成的列表获取
 * @param clazz
 * @return
 */
@SuppressWarnings("unchecked")
public static <T> T getBean(Class<T> clazz) {
   if (null == beanMap.get(clazz)) {
      beanMap.put(clazz, Enhancer.enhance(clazz));
   }
   return (T) beanMap.get(clazz);
}

在使用过程中,如果A类引用了B类,B类应用了A类,会发生死循环。在下不才,这是我封装的有问题,还是版本问题?

评论区

JFinal

2019-04-13 11:57

单步调试看是哪部分代码引起的无限循环,这个问题肯定与 jfinal 无关

jfinal 在 3.7 版本解决的是 Aop.inject 的无限循环问题,而且还只是特定循环依赖下有问题, 并且问题也只是 NullPointerException

ToView

2019-04-13 14:25

@zhangtianxiao jfinal 3.1版本

ToView

2019-04-13 14:29

@JFinal jfinal3.1版本。我经过逐步定位,发现的确是这个原因。A类里面引用了B类,B类应用了A类。在访问A类或者B类的方法,就会引发无限循环问题。我重新复制一个A类和B类,再引用就没有这个问题。

热门反馈

扫码入社