Resource依赖注入支持system.property.开头的系统变量

This commit is contained in:
Redkale
2017-11-02 17:42:16 +08:00
parent e125aa9885
commit e559379294

View File

@@ -576,24 +576,11 @@ public final class ResourceFactory {
} }
boolean autoregnull = true; boolean autoregnull = true;
final String rcname = tname; final String rcname = tname;
ResourceEntry re = findEntry(rcname, genctype); Object rs;
if (re == null) { if (rcname.startsWith("system.property.")) {
if (rcname.startsWith("property.")) { rs = System.getProperty(rcname.substring("system.property.".length()));
re = findEntry(rcname, String.class); } else {
} else { ResourceEntry re = findEntry(rcname, genctype);
re = findEntry(rcname, classtype);
}
}
if (re == null) {
ResourceLoader it = findLoader(genctype, field);
if (it != null) {
it.load(this, src, rcname, field, attachment);
autoregnull = it.autoNone();
re = findEntry(rcname, genctype);
}
}
if (re == null && genctype != classtype) {
re = findEntry(rcname, classtype);
if (re == null) { if (re == null) {
if (rcname.startsWith("property.")) { if (rcname.startsWith("property.")) {
re = findEntry(rcname, String.class); re = findEntry(rcname, String.class);
@@ -602,22 +589,39 @@ public final class ResourceFactory {
} }
} }
if (re == null) { if (re == null) {
ResourceLoader it = findLoader(classtype, field); ResourceLoader it = findLoader(genctype, field);
if (it != null) { if (it != null) {
it.load(this, src, rcname, field, attachment); it.load(this, src, rcname, field, attachment);
autoregnull = it.autoNone(); autoregnull = it.autoNone();
re = findEntry(rcname, classtype); re = findEntry(rcname, genctype);
} }
} }
if (re == null && genctype != classtype) {
re = findEntry(rcname, classtype);
if (re == null) {
if (rcname.startsWith("property.")) {
re = findEntry(rcname, String.class);
} else {
re = findEntry(rcname, classtype);
}
}
if (re == null) {
ResourceLoader it = findLoader(classtype, field);
if (it != null) {
it.load(this, src, rcname, field, attachment);
autoregnull = it.autoNone();
re = findEntry(rcname, classtype);
}
}
}
if (re == null && autoregnull) {
register(rcname, genctype, null); //自动注入null的值
re = findEntry(rcname, genctype);
}
if (re == null) continue;
re.elements.add(new ResourceElement<>(src, field));
rs = re.value;
} }
if (re == null && autoregnull) {
register(rcname, genctype, null); //自动注入null的值
re = findEntry(rcname, genctype);
}
if (re == null) continue;
re.elements.add(new ResourceElement<>(src, field));
Object rs = re.value;
if (rs != null && !rs.getClass().isPrimitive() && classtype.isPrimitive()) { if (rs != null && !rs.getClass().isPrimitive() && classtype.isPrimitive()) {
if (classtype == int.class) { if (classtype == int.class) {
rs = Integer.decode(rs.toString()); rs = Integer.decode(rs.toString());