org.nutz.ioc.meta.IocValue Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of nutz Show documentation
Show all versions of nutz Show documentation
Nutz, which is a collections of lightweight frameworks, each of them can be used independently
package org.nutz.ioc.meta;
import org.nutz.json.Json;
/**
* 描述了对象的一个值,这个值可以是构造函数的参数,也可以是一个字段的值。
*
* 它由两个属性,一个是值的类型,另外一个是 value。
*
*
赋值约定
*
*
* - 如果 type 是 "null",则值会被认为是 null
*
- 如果 value 是 字符串,数字,布尔,那么 type 必须为 "normal"或 null
*
- 如果 value 是 数组, Collection 或 Map,那么类型也必须是 "normal"或 null,Ioc
* 容器的实现类会深层递归集合的每个元素。集合内的每个元素的值也可以是 IocValue,规则符合本约定
*
- 如果 value 是 IocObject,则表示这个值是一个内部匿名对象,type 必须为 "inner" 或者 null
*
- 如果 value 是字符串,表示另外一个对象的名称,type 必须是 "refer"
*
- 如果 value 是字符串,表示一个环境变量(通过System.getenv(String)),type 必须是 "env"
*
- 如果 value 是字符串,表示一个系统变量(通过System.getProperties().get(String)),type 必须是 "sys"
*
- 如果 value 是字符串,表示一个文件路径,type 必须是 "file"
*
- 如果 value 是字符串,表示一个 Java 调用,type 必须是 "java",具体值的语法,请参看 JavaValue 类的
* JDoc,当然 Ioc 容器来解析执行它,不需要 IocLoader 操心 说明
*
- 你的 ValueProxyMaker 可以扩展这个约定
*
*
* @author zozoh([email protected])
*
* @see org.nutz.ioc.val.JavaValue
*/
public class IocValue {
public static final String TYPE_NORMAL = "normal";
public static final String TYPE_INNER = "inner";
public static final String TYPE_REFER = "refer";
public static final String TYPE_ENV = "env";
public static final String TYPE_SYS = "sys";
public static final String TYPE_FILE = "file";
public static final String TYPE_JAVA = "java";
public static final String TYPE_JNDI = "jndi";
private String type;
private Object value;
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public Object getValue() {
return value;
}
public void setValue(Object value) {
this.value = value;
}
@Override
public String toString() {
return String.format("{%s:%s}", type, Json.toJson(value));
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy