别名

优质
小牛编辑
127浏览
2023-12-01

一个ioc bean,通常只有一个名字, 然而,在某些场景下,需要两个名称均指向同一个bean.

例如nutzmore中的插件,均以conf这个名称取PropertiesProxy的实例,而你的项目中已经定义为config,而且改起来麻烦,
那这个时候,你就需要按下面的方式,定义一个影子bean了, 间接达到了别名的效果

var ioc = {
    // 原有配置
    config : {
        type : "org.nutz.ioc.impl.PropertiesProxy",
        fields : {
            paths : ["custom/"]
        }
    },
    // 创建别名 
    conf : {
        type : "org.nutz.ioc.impl.PropertiesProxy"
        fatcoty : "org.nutz.ioc.Iocs#self",
        args : [{refer:"config"}]
    }
};

原理是啥? Iocs的self方法是静态方法,且只有一个参数,而内容,也就是会返回参数本身.

public static Object self(Object obj) {
    return obj;
}