700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Java 反射将配置文件数据加载到对象属性中

Java 反射将配置文件数据加载到对象属性中

时间:2024-05-16 01:02:59

相关推荐

Java 反射将配置文件数据加载到对象属性中

Java 反射将配置文件数据加载到对象属性中

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 DateDescription* ============ =========== ============================* DELL4月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 blocke.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());}}

配置文件:

D:/CPCN/Payment/StatementExternal/config/application.properties

#每次批量更新条数上限StatExternal.batchUpdateSize=100

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。