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        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 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

  

转载于:https://www.cnblogs.com/wangming2011hit/p/6760974.html

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

  1. java 数据加载到内存jvm中

    为什么需要将java 数据加载到内存? 1 将数据加载到jvm运行内存中,会占用运行内存,一些对象,初始化数据,枚举等 缺点:如果值有修改,需要重新部署项目才能生效. 2 一些不想放到redis 缓存 ...

  2. OpenCV将GIS数据加载到OpenCV容器中的实例(附完整代码)

    OpenCV将GIS数据加载到OpenCV容器中的实例 OpenCV将GIS数据加载到OpenCV容器中的实例 OpenCV将GIS数据加载到OpenCV容器中的实例 #include "o ...

  3. Cathy学习Java——反射和类的加载

    工厂设计模式 工厂方法模式 概述 工厂:就是生产特点产品的 实现方式 1>创建一个抽象工厂类,声明抽象方法 2>写一个具体抽象工厂类的子类,由子类负责对象的创建 优点:后期容易维护,增强了 ...

  4. 如何将测绘数据加载到三维地图中,解决海量测绘数据在线管理难题?

    <四维轻云>是四川兴域技术团队基于浏览器打造的一款地理空间数据在线管理平台,可实现TB级大规模倾斜摄影三维模型.正射影像.激光点云.数字高程模型等数据在线发布.管理及分享,并支持私有化部署 ...

  5. ignite mysql_apache ignite系列(三):数据处理(数据加载,数据并置,数据查询)

    ​使用ignite的一个常见思路就是将现有的关系型数据库中的数据导入到ignite中,然后直接使用ignite中的数据,相当于将ignite作为一个缓存服务,当然ignite的功能远不止于此,下面以将 ...

  6. MPP 二、Greenplum数据加载

    Loading external data into greenplum database table using different ways... Greenplum 有常规的COPY加载方法,有 ...

  7. azure云数据库_从Azure Databricks将数据加载到Azure SQL数据库

    azure云数据库 In this article, we will learn how we can load data into Azure SQL Database from Azure Dat ...

  8. Spring Boot 配置文件的加载优先级

    1. 前言 今天突发奇想,如果Spring Boot的配置文件同时存在application.properties和application.yaml,于是便测试了一波.结果测出来优先级的顺序为 pro ...

  9. oracle数据加载控制文件格式,oracle数据加载的几种常用方法

    1.sqlldr参数 userid用户名和密码 control控制文件名称 log日志 bad坏信息文件 data数据文件 discard丢弃文件 discardmax允许丢弃数据量,默认全部丢弃 s ...

最新文章

  1. Spring解析,加载及实例化Bean的顺序(零配置)
  2. 你的代码会被GitHub埋在北极,保存1000年,用二维码胶片备份人类文明
  3. oracle windows 使用,Oracle在windows上的安装及使用
  4. MacOS使用Charles抓去HTTPS数据
  5. Uipath 学习栏目基础教学:2Uipath变量介绍
  6. 3D 机器视觉 01 - 格雷码在3D视觉中的运用和码位选择原则
  7. fastapi学习(二):路径参数获取与GET、POST参数获取
  8. 直觉模糊有计算机知识嘛,直觉模糊集理论及应用 上册
  9. Win10(7~10)备份还原系统
  10. 夺命雷公狗ThinkPHP项目之----企业网站25之网站前台面包屑导航URL的完善
  11. 秋冬易感冒着凉 风寒感冒9大食疗方
  12. 怎么切换双显示屏的左右显示器
  13. 计算机毕业设计之java+ssm基于web的医院门诊互联电子病历管理信息系统
  14. JDBC-05-PreparedStatement实现通用的增、删、改,查的方法
  15. 单片机 STM32 HAL 网络模块 ENC28J60
  16. Science上聚类算法论文——Clustering by fast search and find of density peaks翻译稿
  17. jredis 工具_java中的redis工具类
  18. java快速排序 (任何人都能看懂的快速排序)
  19. 西瓜书周志华读书笔记
  20. HBase实现谷粒微博案例

热门文章

  1. HNUOJ 13341
  2. 建造者模式与原型模式/builder模式与prototype模式/创建型模式
  3. 金融产品京东金融2015年战略主攻三大方向:股权众筹、农村金融和校园金融...
  4. HOJ 1991 Happy 2005 HOJ 2635 Weights 快速幂
  5. 回调函数与Delphi的事件模型
  6. vss6 forgot admin password
  7. whitepages 被关闭_除了滑动关闭APP影响电池寿命,还有哪些操作触碰到了你的知识盲区?...
  8. POJ2446 二分匹配
  9. 【IOC 控制反转】Android 事件依赖注入 ( 事件依赖注入具体的操作细节 | 创建 事件监听器 对应的 动态代理 | 动态代理的数据准备 | 创建调用处理程序 | 创建动态代理实例对象 )
  10. 【错误记录】Android Studio 的 Flutter 代码界面没有 Logcat 面板