NutzCN Logo
问答 非单例注入,栈溢出错误,求帮助
发布于 2891天前 作者 苍蓝猛兽 1338 次浏览 复制 上一个帖子 下一个帖子
标签:

报错

···
Caused by: java.lang.StackOverflowError
···

代码

···
@IocBean(singleton = false)
class A{
@inject
B
}

@IocBean(singleton = false)
class B{
}
···

在不加singleton = false时是可以正常注入的,但是加了之后就报栈溢出了,如何解决呢???
10 回复

为何要加singleton = false?

因为有大量线程处理,A,B中都有私有属性,用单例的话会导致数据不正确

测试代码如下:

package org.nutz.ioc.loader.annotation.meta.issue1191;

import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean;

@IocBean(singleton=false)
public class Issue1191A {
    @Inject
    protected Issue1191B issue1191b;
}

package org.nutz.ioc.loader.annotation.meta.issue1191;

import org.nutz.ioc.loader.annotation.IocBean;

@IocBean(singleton=false)
public class Issue1191B {
}
    @Test
    public void test_issue1191() {
        AnnotationIocLoader loader = new AnnotationIocLoader(getClass().getPackage().getName());
        NutIoc ioc = new NutIoc(loader);
        ioc.get(Issue1191A.class);
        ioc.depose();
    }

测试结果: pass

报错

还报了一个错误,无法创建B

org.nutz.ioc.IocException: [fatherService] # FAIL to create Ioc Bean name=[fatherService]

A,B中有大量的私有属性

@qq_cdd73473 先把我给的测试代码跑一下

是可以通过的,我郁闷啦。

我发现问题啦,帮忙看下哦

在Issue1191B 中再注入Issue1191A ,UT就报错啦

@qq_cdd73473 非单例的循环注入是不支持的

添加回复
请先登陆
回到顶部