NutzCN Logo
问答 Ioc 单例模式改为false,为什么没效果
发布于 2393天前 作者 jadendong 1384 次浏览 复制 上一个帖子 下一个帖子
标签:

新手提问

在学习nutz的过程中(参考 Nutz 参考手册核心包),只要在配置文件里把单例模式改为false。那么它每次获取,都会生成一个新的实例。
但是实际情况,无论是true还是false。比较对象地址时,都是 true

var ioc = {

    /* 默认不需要写类型,Nutz IOC 会自动转型*/
    zhangsan: {
        name: "zhangsan",
        birthday: '2018-06-04 16:25:00'
    },

    lishi: {
        type: "entity.Pet",
        singleton : false, // 是否为单件
        args: ['li shi'],
        fields: {
            birthday: '2018-06-04 16:30:00',
            friend: {
                refer: 'zhangsan'
            }
        }
    }
}
public class HelloPet {

    public static void main(String[] args) {

        Ioc ioc=new NutIoc(new JsonLoader("pets.js"));
        Pet pet=ioc.get(Pet.class,"zhangsan");
        System.out.println(pet.getName()+" 的时区是 "+pet.getBirthday().getTimeZone().getID());

//      如果配置文件中声明了类型,则可不传入类型

        Pet xh=ioc.get(null,"lishi");
        System.out.println(xh.getName()+" 的朋友是 "+xh.getFriend().getName());

//      声明了 singleton: false,那么它每次获取,都会生成一个新的实例
        Pet p1=ioc.get(null,"zhangsan");
        Pet p2=ioc.get(null,"zhangsan");

        // TODO: 2018/6/4 0004 为什么我设置了单例模式,还是true
        System.out.println(p1==p2);

        ioc.depose(); // 关闭 IOC 容器

    }
}
2 回复

你设置的是lishi的singleton

哈哈哈哈,是我错了,眼神不太好

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