您的位置:首页 > 编程语言 > Java开发

Java 反射将配置文件数据加载到对象属性中Reflect与Properties使用

2017-12-01 18:16 936 查看

Java 反射将配置文件数据加载到对象属性中Reflect与Properties使用

Java 反射 可以根据类名找到相应的类,也可以将配置文件中的值加载到对应属性中。

需要用到的包:spring-core-3.1.2.Release.jar

Java 反射的一种应用:
import java.io.File;
import java.io.IOException;
import java.lang.reflect.Field;
import java.util.Properties;

import org.springframework.core.io.FileSystemResource;
import org.springframework.core.io.support.PropertiesLoaderUtils;

/**
* 类说明
*
* <pre>
* Modify Information:
* Author        Date          Description
* ============ =========== ============================
* DELL          2017年4月25日    Create this file
* </pre>
*
*/

public class Reflect4Proterties {

public static final String APP_CONFIG_FILE = "application.properties";

public static int batchUpdateSize = 100;
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
String configPath ="D:/CPCN/Payment/StatementExternal/config";
FileSystemResource resource = new FileSystemResource(configPath + File.separatorChar + APP_CONFIG_FILE);
Properties configProperties = new Properties();
PropertiesLoaderUtils.fillProperties(configProperties, resource);

try {
reflectFieldValue("StatExternal", Reflect4Proterties.class, configProperties, null);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

public static void reflectFieldValue(String preFix, Class<?> reflectClass, Properties properties, Object obj) throws Exception {

Field[] allFields = reflectClass.getDeclaredFields();
Field thisField = null;
String fieldName = "";
String fieldValue = "";
String preFixStr = isNotEmpty(preFix) ? (preFix + ".") : "";
// 如果有前缀,则是前缀加上.如前缀BANK_B2C_104,则最后去相应properties中的值为BANK_B2C_104.(fileldName)
for (int i = 0; i < allFields.length; i++) {
thisField = allFields[i];
fieldName = thisField.getName();
fieldName = preFixStr + fieldName;
fieldValue = (String) properties.get(fieldName);
// 此处只能用null,不能用"",因为bank.properties中可能有空的值
if (null != fieldValue) {
if ("int".equals(thisField.getType().getName())) {
thisField.set(obj, Integer.parseInt(fieldValue));
} else if ("boolean".equals(thisField.getType().getName())) {
thisField.set(obj, Boolean.parseBoolean(fieldValue));
} else if ("long".equals(thisField.getType().getName())) {
thisField.set(obj, Long.parseLong(fieldValue));
} else {
thisField.set(obj, fieldValue.trim());
}
System.out.println("---注入" + fieldName + "的值为\"" + fieldValue + "\"成功---");
}
}

}

/**
* 判断字符串是否不为空
*/
public static boolean isNotEmpty(String str) {
return str != null && !"".equals(str.trim());
}

}


 配置文件:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐