NutzCN Logo
精华 如何从Properties配置文件读取值
发布于 1307天前 作者 fineliving 1505 次浏览 复制 上一个帖子 下一个帖子
标签:

例如
Properties: value="key1=1234"
现在我想把1234 存在Properties文件里面 value1=1234 该如何写?
Properties: value="key1=java :$config.get('value1')" 吗?试了好像不对。

11 回复

Properties里存变量? 没有原生支持的, 变通一下, foreach替换一下

        PropertiesProxy conf = ioc.get(PropertiesProxy.class, conf);
        
        Context cnt = Lang.context().putAll(conf.toMap());
        for (Entry<String, String> en : conf.entrySet()) {
            if (en.getValue().contains("${")) {
                CharSegment seg = new CharSegment(en.getValue());
                conf.put(en.getKey(), seg.render(cnt).toString());
            }
        }

我想配置IOC的jason文件,怎么用啊?

@fineliving

没看懂. 说的是这种??

var ioc = {
// 参考 https://github.com/xetorthio/jedis/wiki/Getting-started
		jedisPoolConfig : {
			type : "redis.clients.jedis.JedisPoolConfig",
			fields : {
				testWhileIdle : true, // 空闲时测试,免得redis连接空闲时间长了断线
				maxTotal : 100 // 一般都够了吧
			}
		},
		jedisPool : {
			type : "redis.clients.jedis.JedisPool",
			args : [
			        {refer : "jedisPoolConfig"},
			        // 从配置文件中读取redis服务器信息
			        {java : "$conf.get('redis.host', 'localhost')"}, 
			        {java : "$conf.getInt('redis.port', 6379)"}, 
			        {java : "$conf.getInt('redis.timeout', 2000)"}, 
			        {java : "$conf.get('redis.password')"}, 
			        {java : "$conf.getInt('redis.database', 0)"}
			        ],
			fields : {},
			events : {
				depose : "destroy" // 关闭应用时必须关掉呢
			}
		}
};

是啊,你刚才的代码我咋用到这里面去?

@wendal 兽总,回答下啊

去看nutzbook

@wendal 我感觉你没明白我想要问的问题。你说的这个我看过nutzbook了,我也明白了,但是我需要配置的 是
Properties: value="key1=java :$config.get('value1')"
不是
args : [{java : "$conf.get('redis.host', 'localhost')"}]
感觉是
java :$config.get('value1') 包含在字符串里面就取不到了,有啥办法吗?

@wendal 不知道我说清楚了没?

1.r.54 以上支持EL

写成这样, 注意双引号和单引号.

myfield : {el : "'abc'+$conf['topic.image.dir']"}

@wendal 多谢
args : [{java : "$conf.get('redis.host')"}] 等同于
args : [{"$conf['redis.host']"}] 吗?

@wendal 非常感谢,理解了

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