NutzCN Logo
问答 如何在代码中引用配置值
发布于 2822天前 作者 qq_8c799e25 2023 次浏览 复制 上一个帖子 下一个帖子
标签:

我想把 properties里的值单独在代码中引用出来,我用

        ioc = new NutIoc(new JsonLoader("ioc/dao.js"));
        dao = ioc.get(Dao.class);
        conf = ioc.get(PropertiesProxy.class);  //异常!

为何会异常呢?

Caused by: org.nutz.ioc.ObjectLoadException: Object 'propertiesProxy' without define!
	at org.nutz.ioc.loader.combo.ComboIocLoader.load(ComboIocLoader.java:174)
	at org.nutz.ioc.impl.NutIoc.get(NutIoc.java:180)
	... 5 more

另外,我采用Inject方式也不行
@Inject("java:$config.get('stock.day_num_for_check')")
private String day_num_for_check;

返回是空

4 回复

首先, 不要new NutIoc, 除非你知道你在干啥, 有很多方式获取现有的Ioc容器 http://nutzam.com/core/ioc/ioc_by_hand.html

然后, 要看dao.js里面的PropertiesProxy定义成什么名字, 通常叫conf, 而非config

// 从ioc容器直接取
PropertiesProxy conf = ioc.get(PropertiesProxy.class, "conf");

// 注入的方式
 @Inject("java:$conf.get('stock.day_num_for_check')")

// 从ioc容器直接取
PropertiesProxy conf = ioc.get(PropertiesProxy.class, "conf");

好的,用这个解决了,非常感谢。

// 注入的方式(该类有加 @IocBean注解)
@Inject("java:$conf.get('stock.day_num_for_check')")

我还是返回null, 这个使用方式好没试通,求解下,我这个不是在mvc环境,就是单机程序

@qq_8c799e25 那问题就明了了, 这个对象不是ioc里面取出来的, 而是自行new出来的. 要从ioc取出来的对象,才能享受注入的福利哦

public static Ioc ioc;

public void init() {
     ioc = new NutIoc(new ComboIocLoader("*js", "ioc/", "*anno", "net.wendal.nutzbook"));
}

// 然后需要获取ioc对象的地方

CheckJob job = XXX.ioc.get(CheckJob.class); // 这样取出来的对象, @IocBean/@Inject才会生效
CheckJob job = new CheckJob(); // 这new出来的对象,是没有注入一说的.

哦,了解了,谢谢!

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